从表单传递的参数中收集值

时间:2013-02-15 10:40:30

标签: ruby-on-rails ruby-on-rails-3

当我提交表单时,我收到以下参数:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"3434343445=", "form"=>{"requested_user"=>"user@example.com"}, "form_type"=>"repository_creator", "gitcategory"=>{"name"=>"mechanical"}, "svncategory"=>{"name"=>"sales"}, "commit"=>"Submit"}

在我的模型中self.requested_user可供我使用,因为requested_use r是我的模型中的字段。但是其他值如svncategorygitcategory都是从select标记传递的,该标记未存储在我的数据库中,也不是我模型的一部分。我只是通过html下拉列表传递,因为我不想将它存储在任何地方。

如何访问我的模型中的变量,svncategory's namesvncategory's

1 个答案:

答案 0 :(得分:1)

传递给控制器​​的参数可通过变量params获得。 params[:svncategory].inspect会产生{"name"=>"sales"}

params变量只能通过控制器层访问,因此您必须将所需的参数传递给模型。

可以通过在模型中添加attr_acccessors来实现这一点。

class YourModel < ActiveRecord::Base
  attr_accessor :gitcategory, :svncategory
end

然后在实例化对象时手动设置属性。

your_model = YourModel.new(params[:form])
your_model.gitcategory = params[:gitcategory][:name]
your_model.svncategory = params[:svncategory][:name]

虽然它不是一个理想的解决方案,但它可以解决您的问题。