0

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

<%= 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并使用,则会收到此错误:@templatescollection_select

undefined method `merge' for :name:Symbol

有什么想法吗?

4

2 回答 2

2

您可以通过在前面加上两个冒号来做到这一点。例如,

<%= price.collection_select(:price, :template_id, ::Template.all, :id, :name) %>

但我相信,您应该避免使用模板作为模型名称,因为它是 rails Action View Template

于 2013-01-17T05:25:21.957 回答
1

解决了。这非常简单。

<%= price.collection_select(:template_id, @templates, :id, :name) %>

复制。呃。

于 2013-01-17T01:40:18.910 回答