我想知道如何创建一个与模型无关的字段,我需要该字段的唯一原因是确定要对其执行哪些操作。
让我说我有一篇模型文章,当创建一篇新文章时,我想要一个隐藏的字段,其中有0,1,2并且在控制器中,我会看到params是否等于0,然后做这组逻辑或1然后这组逻辑。
谢谢,我也知道为每个动作定义一组动作是行不通的。
答案 0 :(得分:2)
在表单中,您可以声明与模型没有直接关联的隐藏和可见字段。提交表单时,在表单的操作中,您可以操纵params
中与模型无关的属性。
当您声明表单字段时,您可以使用以_tag
结尾的字段,email_field_tag
,radio_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...
通过这种方式,最终用途将无法修改工作流程。