0

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

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_user 是我的模型表单中的一个字段。但其他值如svncategorygitcategory是从选择标记传递的,该标记未存储在我的数据库中,也不属于我的模型的一部分。我只是通过 html 下拉列表传递它,因为我不想将它存储在任何地方。

我如何访问该变量,即在我的模型中命名svncategory's namesvncategory's

4

1 回答 1

1

传递给控制器​​的参数可通过变量 获得paramsparams[: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]

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

于 2013-02-15T10:46:20.590 回答