Ruby on rails 在Rails中传递没有模型关联的变量

Ruby on rails 在Rails中传递没有模型关联的变量,ruby-on-rails,Ruby On Rails,我有一个变量,我想通过rails中的表单传递它 变量不方便,因为它不是模型的一部分。我真的不想在DB中创建一列,这样我就可以传递变量了 当我尝试使用一些无害的方法传递变量时,例如: <input type="hidden" id="blah" value=<%= "#{@blah}" %> /> 隐藏字段在源中正确显示,但不随参数散列一起传递。当我用类似于id=“review_blah”rails的东西正确地对它进行编码时,rails假定它是review模型的一部分

我有一个变量,我想通过rails中的表单传递它

变量不方便,因为它不是模型的一部分。我真的不想在DB中创建一列,这样我就可以传递变量了

当我尝试使用一些无害的方法传递变量时,例如:

<input type="hidden" id="blah" value=<%= "#{@blah}" %> />

隐藏字段在源中正确显示,但不随参数散列一起传递。当我用类似于
id=“review_blah”
rails的东西正确地对它进行编码时,rails假定它是review模型的一部分,并且因为它不是模型的一部分而生气

难道没有解决办法吗??在这些情况下,是否有一些方法可以轻松地传递变量,而无需重建模型

感谢您在型号中使用

attr_accessible :blah
模型中

attr_accessible :blah

虽然它很难看,但你可以做如下的事情

<input name='x' type="hidden" id="blah" value=<%= "#{@blah}" %> />

虽然它很难看,但你可以做如下的事情

<input name='x' type="hidden" id="blah" value=<%= "#{@blah}" %> />

我认为您需要设置输入参数的名称。否则它将不会包含在Rails参数散列中

<input type="hidden" id="blah" value=<%= "#{@blah}" %> name="blah"/>

我认为您需要设置输入参数的名称。否则它将不会包含在Rails参数散列中

<input type="hidden" id="blah" value=<%= "#{@blah}" %> name="blah"/>

表中不需要有列。检查 这样你就可以

=form_for @model do |f|
  =f.hidden_field :blah
这将沿着
params
散列中的对象传递
blah

表中不需要有列。检查 这样你就可以

=form_for @model do |f|
  =f.hidden_field :blah

这将沿着
参数
散列中的对象传递
blah

您需要为虚拟属性定义一个
属性访问器
,并需要将其添加到
属性可访问
列表中,以便在表单中使用。像这样:

attr_accessor :blah
这使得
blah
blah=
方法可用,您可以使用这些方法来处理传入的数据

def blah=(data)
  #do sth. with the submited data here
end
在这种情况下,您可以访问在“blah”字段中作为局部变量“data”输入的数据

然后您需要将其作为常规表单的一部分:

<%= f.hidden_field :blah, :value => <Your value here> %>

否则,由于批量分配保护,请求将失败。

您需要为虚拟属性定义一个
属性访问器,并需要将其添加到
属性可访问
列表中,以便在表单中使用。像这样:

attr_accessor :blah
这使得
blah
blah=
方法可用,您可以使用这些方法来处理传入的数据

def blah=(data)
  #do sth. with the submited data here
end
在这种情况下,您可以访问在“blah”字段中作为局部变量“data”输入的数据

然后您需要将其作为常规表单的一部分:

<%= f.hidden_field :blah, :value => <Your value here> %>

否则,由于批量分配保护,请求将失败。

您是否尝试了params[:blah]?您是否尝试了params[:blah]?