1

我有一个(如果最简单的话,我simple_form_for 也可以使用simple_form)我想传递/更新 3 个参数。其中 1 个是“用户生成的”,而另外 2 个需要“自动”在 db 中插入/更新。

这是我目前的表格:

= 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"

我正在寻找的是用户可以选择一个:partner_idfrom collection_select,而我需要插入/更新:successful_ad => true:status => false.

我不想使用hidden_​​field因为它可以被操纵,最安全的方法是在后台处理它们。

PS:我无法在编辑/更新操作中传递这些参数的原因是因为我在显示操作中有此表单并且是分开的。

4

1 回答 1

0

当然,始终使用服务器端代码的最安全方法。但是你需要知道它什么时候发生,这是来自客户端的东西。

您可以使用after_saveor after_update,并且可以在那里完成工作。但并非每个saveupdate行动都需要这个;只有少数人可能需要这个。所以你需要在你的表单中有一个隐藏字段,但是你可以加密它的内容,然后,在服务器端,如果你收到加密的密钥,你可以在回调中执行特定任务。

最终用户将始终有权更改隐藏字段的内容,因此现在由您决定使用加密密钥和用户无法突破的列名。

编辑:对于您的要求,您可以执行以下操作:

= f.input :status, :input_html => { :checked => false, value: 'Your desired value'}
于 2016-02-24T09:52:45.510 回答