Ruby on Rails 4- 单击提交按钮时在 Simple_form_for 中传递参数
Ruby on Rails 4- Passing params in Simple_form_for when clicking submit button
我有一个 simple_form_for
(如果最简单,我也可以使用 simple_form
) 我想要 pass/update 3 个参数。其中 1 个是 "user-generated",而另外 2 个需要是 insert/update in db "automatically".
这是我当前的表格:
= simple_form_for @request do |f|
= f.collection_select :partner_id, @partners, :id, :full_name, {prompt: "Select a user"}
= f.input :successful_ad, checked: true, value: true
= f.input :status, checked: false, value: 0
= f.submit "I have excepted"
我正在寻找的是用户可以从 collection_select
中选择 :partner_id
,而我需要 insert/update :successful_ad => true
和 :status => false
。
我不想使用 hidden_field 因为它可以被操纵,最安全的方法是在后台处理它们。
PS:我无法在 edit/update 操作中传递这些参数的原因是因为我在 show 操作中有此表单并且是分开的。
当然,始终使用服务器端代码是最安全的方法。但是你需要知道它什么时候发生,这是来自客户端的事情。
您可以使用 after_save
或 after_update
,并且可以在那里完成工作。但并非每个 save
或 update
操作都需要这个;只有少数人可能需要这个。所以你需要在你的表单中有一个隐藏字段,但是你可以加密它的内容,然后,在服务器端,如果你收到那个加密密钥,你可以在你的回调中完成特定的任务。
最终用户始终有权更改隐藏字段的内容,因此现在由您使用加密密钥和用户无法破解的列名。
编辑:对于您所要求的,您可以执行以下操作:
= f.input :status, :input_html => { :checked => false, value: 'Your desired value'}
我有一个 simple_form_for
(如果最简单,我也可以使用 simple_form
) 我想要 pass/update 3 个参数。其中 1 个是 "user-generated",而另外 2 个需要是 insert/update in db "automatically".
这是我当前的表格:
= simple_form_for @request do |f|
= f.collection_select :partner_id, @partners, :id, :full_name, {prompt: "Select a user"}
= f.input :successful_ad, checked: true, value: true
= f.input :status, checked: false, value: 0
= f.submit "I have excepted"
我正在寻找的是用户可以从 collection_select
中选择 :partner_id
,而我需要 insert/update :successful_ad => true
和 :status => false
。
我不想使用 hidden_field 因为它可以被操纵,最安全的方法是在后台处理它们。
PS:我无法在 edit/update 操作中传递这些参数的原因是因为我在 show 操作中有此表单并且是分开的。
当然,始终使用服务器端代码是最安全的方法。但是你需要知道它什么时候发生,这是来自客户端的事情。
您可以使用 after_save
或 after_update
,并且可以在那里完成工作。但并非每个 save
或 update
操作都需要这个;只有少数人可能需要这个。所以你需要在你的表单中有一个隐藏字段,但是你可以加密它的内容,然后,在服务器端,如果你收到那个加密密钥,你可以在你的回调中完成特定的任务。
最终用户始终有权更改隐藏字段的内容,因此现在由您使用加密密钥和用户无法破解的列名。
编辑:对于您所要求的,您可以执行以下操作:
= f.input :status, :input_html => { :checked => false, value: 'Your desired value'}