Ruby on Rails 4-单击提交按钮

时间:2016-02-24 09:47:05

标签: ruby-on-rails ruby simple-form simple-form-for

我有一个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_id选择collection_select,而我需要插入/更新:successful_ad => true:status => false

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

PS:我无法在编辑/更新操作中传递这些参数的原因是因为我在show动作中有这个形式并且是分开的。

1 个答案:

答案 0 :(得分:0)

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

您可以使用after_saveafter_update,并可以在那里完成工作。但并非所有saveupdate行动都需要这样做;只有少数人可能需要这个。因此,您需要在表单中包含一个隐藏字段,但您可以对其内容进行加密,然后,如果您收到该加密密钥,则可以在服务器端执行回调中的特定任务。

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

编辑:根据您的要求,您可以执行以下操作:

= f.input :status, :input_html => { :checked => false, value: 'Your desired value'}