在ruby中创建一个与模型无关的字段

时间:2013-03-16 18:09:30

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

我想知道如何创建一个与模型无关的字段,我需要该字段的唯一原因是确定要对其执行哪些操作。

让我说我有一篇模型文章,当创建一篇新文章时,我想要一个隐藏的字段,其中有0,1,2并且在控制器中,我会看到params是否等于0,然后做这组逻辑或1然后这组逻辑。

谢谢,我也知道为每个动作定义一组动作是行不通的。

3 个答案:

答案 0 :(得分:2)

在表单中,您可以声明与模型没有直接关联的隐藏和可见字段。提交表单时,在表单的操作中,您可以操纵params中与模型无关的属性。

当您声明表单字段时,您可以使用以_tag结尾的字段,email_field_tagradio_button_tag,以及您的问题hidden_field_tag。例如:

<% hidden_field_tag 'this_is_hidden' %>

尝试一下并检查动作中的内容:raise params.inspect。在这样做时,您会注意到params现在包含您声明的与您的模型无关的属性的键(如属性:this_is_hidden

答案 1 :(得分:1)

尝试使用hidden_​​field_tag。 (建议:将它放在表单标记内的提交按钮之前。)

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_field_tag

hidden_field_tag 'decide', '0'

然后在控制器的新动作中,您可以在params哈希中捕获它,并将其与params [:decision] .to_i

进行比较

答案 2 :(得分:0)

最简单的方法是将@zippie作为隐藏字段提及。但是它有一些风险,因为最终用户可以修改隐藏字段中的值,并且您的程序可能表现不同。

我个人认为,有一种方法可以从传递参数中识别

Ex: if it is a new object then it should go to method A etc... 

通过这种方式,最终用途将无法修改工作流程。