【问题标题】:Pass value of text_field_tag to controller in Rails将 text_field_tag 的值传递给 Rails 中的控制器
【发布时间】:2016-07-14 16:52:47
【问题描述】:

我有一个 text_field_tag 我想将其值传递给控制器​​。

<%= text_field_tag 'amount', 'Enter amount' %>

我已经有一个传递其他参数的 link_to 标记,并且我还想将此文本框的值传递给我的控制器操作。

<%= link_to "Do it", do_it_path(id: some.id, detail: card.summary) %>

任何人都可以提出一些可以实现这一目标的方法吗?我想避免使用表单,因为它只有一个字段,并且我希望保持简单。

【问题讨论】:

  • 为什么不使用表格?表单是您实际执行此操作的最简单方法!否则,我将建议 onclick 处理程序、伪表单和不必要的 Javascript。使用表格,您的最终用户会感激不尽。
  • 感谢您的建议。但我是从 Rails 开始的,所以我想知道有没有其他方法可以做到。
  • 反对票也很受欢迎。

标签: ruby-on-rails model-view-controller


【解决方案1】:

由于您的 text_field_tag 输入是在加载 DOM 之后进行的,因此您可能希望使用 JavaScript 将 text_field_tag 的值附加到链接点击事件中。以下使用jQuery:

<%= text_field_tag "amount", "Enter amount", class: "amount_field" %>

<%= link_to "Do it", do_it_path(id: some.id, detail: card.summary), class: "do_it_link" %>

<script>
  $(".do_it_link").click(function() {
    $(this).attr("href", function() {
      return this.href + "&amount=" + $('.amount_field').val();
    });
  });
</script>

但是你真的应该使用表格。它更简单、更安全。

<%= form_for @something do |f| %>
  <%= f.text_field :amount, placeholder: "Enter amount" %>
  <%= f.hidden_field :detail, value: card.summary %>
  <%= f.submit "Do it" %>
<% end %>

【讨论】:

  • 从这两种方法中学习。虽然我一直在寻找一种 javascript 方式,但我最终还是使用了 form_tag。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
相关资源
最近更新 更多