0

基本的な足場構造を使用しています。published必要なのは、に変更して「中程度」のアクションとビューを追加することtrueです。私の考えでは、moderate.htmlで、パラメータを変更して保存する機能を備えたすべての未公開エントリのリストを取得する必要があります。これが私のコードの一部です:

 #names_controller.rb
 def moderate
 @name = Name.find(:all, :conditions => {:published => false} )
   respond_to do |format|
      format.html 
      format.xml  
     end
 end

#moderate.html.erb
<% form_for @name.each do |f| %>
  <%= f.error_messages %>
    <%= f.text_field :which %>  
    <%= f.text_field :what %>
    <%= f.check_box :published %>
    <%= f.submit %>
  </p>
<% end %>

代わりに、次のエラーが発生します。

NoMethodError in Names#moderate

Showing app/views/names/moderate.html.erb where line #1 raised:

undefined method `enumerable_enumerator_path' for #<ActionView::Base:0x1042c3e90>
Extracted source (around line #1)
 

それで、あなたは初心者を助けてくれますか?

ルビー1.8.7(2009-06-12パッチレベル174)

[universal-darwin10.0] Rails 2.3.5

4

1 に答える 1

1

それぞれの名前を別々の形式で更新したい場合は、ループを上に移動するだけですform_for

<% @name.each do |n| %>
  <% form_for n do |f| %>
    <%= f.error_messages %>
    <%= f.text_field :which %>  
    <%= f.text_field :what %>
    <%= f.check_box :published %>
    <%= f.submit %>
   </p>
  <% end %>
<% end %>

ただし、すべてを1つの送信(単一のフォーム)で実行したい場合は、を使用できないと思いますform_forform_tag複数のインスタンスを更新するためのカスタムフォームを作成するために使用します。これは、フォームの作成と編集の両方で機能するはずです。

<%= form_tag moderate_names_path do %>  
  <% @names.each do |name| %>
    <fieldset>
    <%= fields_for "name[#{name.id}]", name do |name_fields| %>
      <p><%=name_fields.label(:this)%>: <br /><%= name_fields.text_field :this %></p>
      <p><%=name_fields.label(:that)%>: <br /><%= name_fields.text_field :that %></p>
      <p><%= name_fields.check_box :published %> <%=name_fields.label(:published)%></p>
    <% end %>
    </fieldset>
    <br />
  <% end %>  
  <%= submit_tag %>
<% end %>

注意:2番目の例でに変更@nameしました@names

于 2010-10-15T15:10:04.713 に答える