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コントローラーとコンソールから動作します。行に a を記述し@templates = Template.allて使用すると@templates、次のcollection_selectエラーが発生します。

undefined method `merge' for :name:Symbol

何かご意見は?

4

2 に答える 2

2

2 つのコロンを前に付けることで実行できます。例えば、

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

しかし、モデル名としてTemplateを使用することは避けたほうがよいと思います。これは 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 に答える