我想知道如何创建与模型无关的字段,我需要该字段的唯一原因是确定要对其执行哪些操作。
假设我有一篇模型文章,并且在创建新文章时,我想要一个隐藏字段,该字段将具有 0,1,2,在新控制器中,我会查看参数是否等于 0,然后执行此设置的逻辑或 1 那么这组逻辑。
谢谢,我也知道为每个动作定义一组动作是行不通的。
我想知道如何创建与模型无关的字段,我需要该字段的唯一原因是确定要对其执行哪些操作。
假设我有一篇模型文章,并且在创建新文章时,我想要一个隐藏字段,该字段将具有 0,1,2,在新控制器中,我会查看参数是否等于 0,然后执行此设置的逻辑或 1 那么这组逻辑。
谢谢,我也知道为每个动作定义一组动作是行不通的。
在表单中,您可以声明与模型不直接关联的隐藏和可见字段。当您提交表单时,您可以在表单的操作中操作params
与模型无关的属性。
当您声明表单字段时,您可以使用以_tag
like email_field_tag
、radio_button_tag
和关于您的问题 、结尾的字段hidden_field_tag
。例子:
<% hidden_field_tag 'this_is_hidden' %>
试一试并检查动作中的内容:raise params.inspect
. 在这样做时,您会注意到params
now 包含您声明的与您的模型无关的属性的键(如属性:this_is_hidden
)
尝试使用 hidden_field_tag 进行操作。(建议:将其放在表单标签内的提交按钮之前。)
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-hidden_field_tag
hidden_field_tag 'decide', '0'
然后在控制器的新动作中,您可以在 params 哈希中捕获它,并将其与 params[:decide].to_i 进行比较
最简单的方法是有一个隐藏字段作为@Zippie,提到。但是它有一些风险,因为最终用户可以修改隐藏字段中的值,并且您的程序可能会有不同的行为。
我个人认为有某种方法可以从传递的参数中识别
Ex: if it is a new object then it should go to method A etc...
通过这种方式,最终用户将没有机会修改工作流程。