2016-09-01 3 views
2

У меня возникли проблемы с пониманием вложенных ресурсов. Существует служебный эшафот, и есть модель Symptom. Я хотел бы добавить строку symptom_item в сервисный эшафот.Вложенные ресурсы в шаблоне show

Это мой текущий код шаблона шоу:

<% if @service.symptoms.any? %> 
    <% @service.symptoms.each do |symptom| %> 
    <li><%= symptom.symptom_item %></li> 
    <% end %> 
<% else %> 
    <p> 
    none 
    </p> 
<% end %> 

Вот мой код формы:

<%= form_for(@service) do |f| %> 
    <% if @service.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@service.errors.count, "error") %> prohibited this service from being saved:</h2> 

     <ul> 
     <% @service.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :s_text %><br> 
    <%= f.text_area :s_text %> 
    </div> 
    <div class="field"> 
    <%= f.label :img_text %><br> 
    <%= f.text_field :img_text %> 
    </div> 

<%= f.fields_for :symptoms do |builder| %> 
    <div class="field"> 
    <%= builder.label :symptom_item %><br> 
    <%= builder.text_field :symptom_item, :rows => 3 %> 
    </div> 
<% end %> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Вот мой код контроллера, которые позволяют symptom_attributes:

def service_params 
    params.require(:service).permit(:name, :s_text, :img_text, symptom_attributes: [:id, :service_item]) 
end 

I знаете, проблема в шаблоне. Когда я пишу что-то столь же простое, как:

= @service.symptoms 

это дает мне что-то в стиле фанк, как это:

#<Symptom::ActiveRecord_Associations_CollectionProxy:0x000000095295c8> 

Кто-нибудь посмотреть, что случилось с моим кодом в шаблоне шоу или, может быть, некоторые, где еще?

Вот мои модели только в случае, если:

class Service < ActiveRecord::Base 
    has_many :symptoms 
    accepts_nested_attributes_for :symptoms, allow_destroy: true 
end 

class Symptom < ActiveRecord::Base 
    belongs_to :service 
end 

ответ

0

Это должно быть symptoms_attributes вместо symptom_attributes и symptom_item вместо service_item в ваших сильных параметров

def service_params 
    params.require(:service).permit(:name, :s_text, :img_text, symptoms_attributes: [:id, :symptom_item]) 
end 
+0

Я попытался symptom_attributes в symptoms_attributes, но ничего , – pk36

+0

Попробуйте «symptom_item» вместо «service_item» в ваших сильных параметрах. Отредактированный ответ. – Ren