我正在为我的应用程序开发一个调节功能,它基于一个基本的脚手架结构。我需要的是使用布尔参数publised
on编辑几条记录false
。在moderate.html
我得到了所有未发布条目的列表,这些条目能够更改它们的参数which
,what
并且published
。当我尝试通过complete
操作保存更改时,会出现错误。
NamesController 中的参数错误#complete
未知键:7、1、4
“7, 1, 4” 是我未发表记录的 id。
以下是我的代码部分:
#names_controller.rb
def moderate
@names = Name.find(:all, params[:name_ids], :conditions => {:published => false})
respond_to do |format|
format.html { render :action => "moderate" }
format.xml
end
end
def complete
@names = Name.find(params[:name_ids])
@names.each do |name|
name.update_attributes!(params[:name].reject { |k,v| v.blank? })
end
flash[:notice] = "Updated records!"
redirect_to names_path
end
#moderate.html.erb
<% form_tag complete_names_path do %>
<% @names.each do |name| %>
<fieldset>
<% fields_for "name_ids[#{name.id}]", name do |name_fields| %>
<%= name_fields.text_field :which %>
<%= name_fields.text_field :what %>
<%= name_fields.check_box :published %>
<% end %>
</fieldset>
<% end %>
<%= submit_tag "Ok" %>
<% end %>/
#routes.rb
ActionController::Routing::Routes.draw do |map|
map.connect 'moderate', :controller => 'names', :action => 'moderate'
map.resources :names, :collection => { :complete => :put}
map.root :names
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
我明白了,有问题name_ids
,但不明白,我该怎么办。先感谢您。
ruby 1.8.7 (2009-06-12 补丁级别 174)
[通用-darwin10.0] Rails 2.3.5
Rails 日志moderate
和complete
操作:
处理 NamesController#moderate (for 127.0.0.1 at 2010-10-16 21:36:42) [GET] [4;35;1mName Load (0.6ms)[0m [0mSELECT * FROM "names" WHERE ("names". "published" = 'f') [0m 在布局/名称中呈现模板 呈现名称/适度 12 毫秒内完成(查看:7,DB:1)| 200 OK [http://localhost/moderate]
处理 NamesController#complete (for 127.0.0.1 at 2010-10-16 21:36:49) [POST] 参数:{"commit"=>"Ok", "authenticity_token"=>"CtmsjIavksOMSIArrdovkkzuZzHVjkenFFMO5bHIvgg=", "name_ids"= >{"7"=>{"已发布"=>"0", "what"=>"Партия", "which"=>"Крутая"}, "1"=>{"已发布"=>"1" , "what"=>"Россия", "which"=>"Единая"}, "4"=>{"published"=>"0", "what"=>"Организация", "which"=>" Молдавская"}}}
[4;36;1mName Load (0.4ms)[0m
[0;1mSELECT * FROM "names" WHERE ("names"."id"在 (7,1,4)) [0mNoMethodError(当你没有预料到它时你有一个 nil 对象!你可能期望一个 Array 的实例。在评估 nil.reject 时发生错误):
app/controllers/names_controller.rb:47:in each' app/controllers /names_controller.rb:46:in `完成'complete'
app/controllers/names_controller.rb:46:in渲染救援/_trace (110.3ms) 渲染救援/_request_and_response (0.5ms) 渲染救援/布局 (internal_server_error)