我可以从Rails 4中的按钮提交传递参数吗?

时间:2016-04-22 05:59:08

标签: javascript ruby-on-rails

我正在尝试做一些简单的事情:在我的Rails视图中,我有一个文本输入,我想要捕获并附加到params。我found a similar question,但我想知道我是否可以在不更新控制器的情况下进行内联。

首先,在视图中,我有一个表单输入和一个Rails链接。这些工作现在独立进行测试,但我可以在按钮点击时将用户名作为参数传递:

<form>
    <input type="text" name="name">
 </form>    
    <%= button_to 'Call Action', points_path(username: @current_user.last.username), method: :post %>

我想删除@current_user.last.username,而是将用户在输入中键入的内容作为参数传递。

有没有办法在没有子动作的情况下执行此操作,如上所述,在控制器中(通过帮助程序或使用带有我的Rails链接的Javascript)?

2 个答案:

答案 0 :(得分:3)

您正在尝试提交表单,让我们以Rails的方式进行,

<%= form_for :points, points_path do |f|  %>
  <%= f.text_field :name %>
  <%= f.submit %>
<% end %>

在操作中,您可以name

访问params[:points][:name]参数

希望有所帮助!

答案 1 :(得分:1)

  1. Attach a javascript click event to the button可以阻止默认行为。
    • 在您的点击事件中,获取输入元素的值并将其附加到网址var go_to = "/path/to/action?param_name=" + input_value
  2. 然后重定向到该网址。
  3. 您似乎正在使用post方法,因此您可以查看JavaScript post request like a form submit,其中包含如何在不使用ajax的情况下从JavaScript发布的说明 - 简而言之,您可以动态制作表单并提交它。

    修改

    @ RSB正确地做到了 - 这是实现目标的方式。如果您坚持使用按钮和独立输入而不是表单,您可以按照我描述的方式进行操作......但我认为您最好不要遵循@ RSB的建议。