【问题标题】:Ruby On Rails: How to pass an Input value from a form to a controller in a link_to tag?Ruby On Rails:如何将输入值从表单传递到 link_to 标记中的控制器?
【发布时间】:2023-04-08 09:03:01
【问题描述】:

我有一个带有输入标签的表单,它从用户那里获取一个值,旁边有一个链接应该获取该值并将其传递给控制器​​中的一个方法,该控制器根据该哈希生成一个加密值。

但是我的输入 params[:hash] 没有将输入传递给控制器​​。给出 NULL。请查看我的代码,让我知道我哪里出错了。 谢谢

view: 
= simple_form_for(@user, :html => {:class => 'user_form'}) do |f|
= f.input :hash, :input_html => {:class => 'span4'}
= link_to('Click to confirm key Encryption',confirm_encrypt_path(@user,:hash=>?)

controller:
def confirm_encrypt
   check = params[:hash]
   puts check # gives null value 
   MyModel.reset_authentication_pin!(current_user.id,params[:hash])
end

我希望 puts 检查值应该是用户输入的值。

【问题讨论】:

标签: ruby-on-rails ruby view controller


【解决方案1】:

很难说出这里发生了什么,因为您似乎只包含了视图的一部分,如果您可以编辑您的问题,这可能有助于了解其他正在发生的事情。

对我来说突出的三件事是:

  1. 在您看来,您将输入称为 :hash,但是当您尝试获取值时,您会得到 params[:temp1] 而不是 params[:hash]

  2. 在 link_to 中包含用户,但不包含 :hash 的任何值。在我的脑海中,我相信您只需要执行 params[:hash] 即可以您拥有的方式成功地将 :hash 值传递给控制器​​。

  3. 在您看来,您设置了一个 simple_form_for,但您似乎没有使用提交来获取控制器中的 :hash 值。如果你决定走这条路,你只需要确保表单被定向到正确的控制器。

【讨论】:

  • 感谢您对 params[:temp1] 的回复,这是一个错误类型,它应该是 params[:hash] 我编辑了它,但我没有包含 hash 的值,因为我不知道如何将该输入(params [:hash])传递给那个link_tag,所以我只留下“?”最后,我只包含了视图的一部分,还有其他输入标签和一个提交按钮,单击该按钮会正确更新所有值。然而,这个特定的输入哈希是我不想保存的表单的一部分,而是使用这个哈希值来创建一个加密的 pin 并保存加密的 pin。
猜你喜欢
  • 1970-01-01
  • 2012-06-26
  • 2010-12-21
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多