Ruby on rails 编辑多条记录-授予所有登录用户访问权限

Ruby on rails 编辑多条记录-授予所有登录用户访问权限,ruby-on-rails,controller,views,Ruby On Rails,Controller,Views,据我所知,这是一个视图和控制器的问题 我需要允许用户在我的一个数据库表中编辑多条记录。Railscast 165也处理类似的情况,但对我来说,这不是重点: 我有一套固定的产品,我需要让用户向这些产品添加相关的品种。我考虑过一个更简单的解决方案,要求用户进入产品页面,一次编辑一个产品,但这对我的应用程序不起作用。相反,我需要为这一任务提供更多的管理风格的功能 这里的模型关系很简单。一个产品有很多品种,品种属于产品。在我的用户界面中,我只是让用户从包含站点上所有可用产品的下拉菜单中选择一个产品,然后

据我所知,这是一个视图和控制器的问题

我需要允许用户在我的一个数据库表中编辑多条记录。Railscast 165也处理类似的情况,但对我来说,这不是重点:

我有一套固定的产品,我需要让用户向这些产品添加相关的品种。我考虑过一个更简单的解决方案,要求用户进入产品页面,一次编辑一个产品,但这对我的应用程序不起作用。相反,我需要为这一任务提供更多的管理风格的功能

这里的模型关系很简单。一个产品有很多品种,品种属于产品。在我的用户界面中,我只是让用户从包含站点上所有可用产品的下拉菜单中选择一个产品,然后用户可以在文本输入中键入各种产品的名称。例如,如果我们谈论的是苹果,那么用户可以从产品下拉列表中选择苹果,他可能会键入富士和各种苹果。我只需要将产品id和品种[name]保存到品种表中。但是,我需要同时对多个记录执行此操作

目前,我已经有了表单呈现,下拉菜单显示了正确的产品选择。问题似乎是各种输入以html呈现,如下所示:

<label for="nil_class_variety">Variety</label>
<input id="nil_class_name" name="nil_class[name]" size="30" type="text" />  
Routes.rb使自定义控制器操作正常工作 视图/产品/编辑_multiple.html.erb /Users/michael/dev/fresh/app/controllers/products\u controller.rb:73:in-each' /Users/michael/dev/fresh/app/controllers/products\u controller.rb:73:inupdate\u multiple'

日志显示了正确的产品id和我输入的正确名称,但您可以看到它正在调用一个nil类:

Processing ProductsController#update_multiple (for 127.0.0.1 at 2009-10-08 07:31:05) [PUT]
  Parameters: {"commit"=>"Submit Varieties", "authenticity_token"=>"zzkveSe7qzv2NY8WPrR2cYS376u6DBiz8Vc9iNFLQy8=", "product"=>{"product_id"=>"5"}, "nil_class"=>{"name"=>"yellow"}}

当我尝试输入多个产品/品种记录时,日志除了第一个记录外,无法识别任何内容。我得到的结果与我只键入一个产品/品种记录时的结果相同

您的问题的简短答案是,@variation的字段_中未定义@variation。/app/views/products/_variety.html.erb中该行的正确版本为

<% fields_for :variety do |variety_form| -%>
还有一个小挑剔在您的标签行

<%= variety_form.label :variety %>
应该是

<%= variety_form.label :name, "Variety" %>
我不知道你的目标是一次更新多个产品和品种,还是只更新单个产品的品种。假设是后者,您应该使用滚动到嵌套属性示例,看起来这可能是一种更简单的方法。另请参见github存储库以获得工作演示

但事实似乎并非如此。在我看来,您的javascript函数正在为产品和品种添加表单/删除值


这将在控制器中用于添加品种,但在删除现有品种时需要更多的工作。但是,您链接到的railscasts提供了将这些信息整合在一起所需的所有信息。

谢谢。仍在努力解决这个问题。我将在实施后重新检查。
 ActiveRecord::UnknownAttributeError in ProductsController#update_multiple
unknown attribute: product_id

/Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:2740:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:2736:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:2736:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.3/lib/active_record/base.rb:2628:in `update_attributes!'
/Users/michael/dev/fresh/app/controllers/products_controller.rb:74:in `update_multiple'
Processing ProductsController#update_multiple (for 127.0.0.1 at 2009-10-08 07:31:05) [PUT]
  Parameters: {"commit"=>"Submit Varieties", "authenticity_token"=>"zzkveSe7qzv2NY8WPrR2cYS376u6DBiz8Vc9iNFLQy8=", "product"=>{"product_id"=>"5"}, "nil_class"=>{"name"=>"yellow"}}
<% fields_for :variety do |variety_form| -%>
<%= variety_form.label :variety %>
<%= variety_form.label :name, "Variety" %>