2010-10-15 102 views
0

我正在使用基本的腳手架結構。我需要的是通過將published更改爲true來添加「中等」動作和視圖。在我的想法中,在moderate.html上,我應該獲得所有未發佈條目的列表,以便更改和保存其參數。 這裏是我的代碼部分:「未定義的方法`enumerable_enumerator_path'」錯誤

#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) 

所以,你能幫來到新手嗎?

ruby 1.8.7 (2009-06-12 patchlevel 174)

[universal-darwin10.0] Rails 2.3.5

+0

你的問題是因爲,您將@ name.each作爲變量form_for,但我不確定解決方案。你是否試圖一次編輯多條記錄? – 2010-10-15 01:50:38

+0

是的,我是。我需要所有'未發佈'記錄的列表。這個問題肯定是結合了'form_for'和'.each',但不知道任何解決方案。 – Maay 2010-10-15 10:24:11

回答

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

但是,如果你想要做的這一切在一個提交(單一表格),那麼我想你不能使用form_for。我會使用form_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 %> 

注意:我改變@name@names在第二個例子中

+0

Thx回答!第一個示例運行良好,但看起來,我需要第二個,這就是我得到的錯誤:'名稱中的SyntaxError#中等 顯示應用程序/視圖/名稱/ moderate.html.erb其中行#1提出: 編譯錯誤' – Maay 2010-10-15 20:11:39

+0

好吧,我已經在'form_tag'和'fields_for'標記中將<%= %>更改爲<% %>,現在它正在工作。 Thx再次。 – Maay 2010-10-15 20:47:28

+0

是的,很抱歉 - 我使用Rails 3環境編寫了這個例子。 – Matt 2010-10-15 21:04:15