显示模板中的嵌套资源

时间:2016-09-01 00:46:47

标签: ruby-on-rails templates show erb nested-resources

我无法理解嵌套资源。有一个服务脚手架,并有症状模型。我希望能够将symptom_item字符串添加到服务脚手架。

这是我当前的展示模板代码:

<% 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

我知道问题出在show模板中。当我写一些简单的东西时:

= @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

1 个答案:

答案 0 :(得分:0)

您的强参数应该是symptoms_attributes而不是symptom_attributessymptom_item而不是service_item

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