代码之家  ›  专栏  ›  技术社区  ›  Rubioli

Ruby on Rails 4-单击提交按钮时以Simple_form_for传递参数

  •  1
  • Rubioli  · 技术社区  · 9 年前

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

    这是我当前的表格:

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

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

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

    1 回复  |  直到 9 年前
        1
  •  0
  •   Arslan Ali    9 年前

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

    您可以使用 after_save after_update ,可以在那里完成工作。但不是所有 save update 行动将需要这一点;只有少数人可能需要这个。因此,您需要在表单中有一个隐藏字段,但您可以加密该字段的内容,然后,在服务器端,如果您收到加密密钥,您可以在回调中执行特定任务。

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

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

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