奇怪的未定义方法'all'和collection_select错误

时间:2013-01-17 01:12:12

标签: ruby-on-rails-3 nested-attributes

我有一个这样的表格(简化,但你明白了):

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

有什么想法吗?

2 个答案:

答案 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。