我有一个这样的表格(简化,但你明白了):
<%= form_for(@brand, :html => { :class => "form-horizontal" }) do |f| %>
<%= f.fields_for :prices do |price| %>
<%= price.collection_select(:price, :template_id, Template.all, :id, :name) %>
<% end %>
<%= f.submit "Save", :class => 'btn btn-primary' %>
<% end %>
在渲染时会给我这个错误
undefined method `all' for ActionView::Template:Class
在collection_select
行上。
Template.all
来自控制器和控制台。如果我在@templates = Template.all
行写一个@templates
并使用collection_select
,那么我会收到此错误:
undefined method `merge' for :name:Symbol
有什么想法吗?
答案 0 :(得分:2)
你可以通过添加两个冒号来做到这一点。 e.g,
<%= price.collection_select(:price, :template_id, ::Template.all, :id, :name) %>
但我相信,你应该避免使用模板作为模型名称,因为它是rails Action View Template
答案 1 :(得分:1)
解决了它。这很烦人。
<%= price.collection_select(:template_id, @templates, :id, :name) %>
重复。 Eugh。