通过link_to rails 4将params传递给控制器​​方法

时间:2016-02-02 12:16:36

标签: javascript ruby-on-rails ruby-on-rails-4

我想将一个params从text_field_tag传递给我的控制器,但它不会通过link_to传递

      <div class="row" id="page-search">
        <%= hidden_field_tag :page, params[:page], class: 'form-control', value: '1'%>
        <%= text_field_tag :page, params[:page], class: 'form-control', id: 'show-page'%>
        <%= link_to 'Go', currencies_path, :remote => true, method: :get, class: "btn btn-default", id: "show-button" %>
      </div>

控制器方法

      def index
        @currencies = Currency.all.page(params[:page]).per(10)
      end

它应该调用它所做的方法,但它不会通过params [:page]。有关如何解决这个问题的任何线索?

谢谢

根据建议,我做了这个,但我仍然面临同样的问题,因为它没有通过参数

       <%= form_tag currencies_path, :method => :get do -%>
          <%= text_field_tag :page, params[:page], class: 'form-control', id: 'show-page'%>
          <%= hidden_field_tag :page, params[:page], class: 'form-control', value: '1'%>
          <%= submit_tag 'Go' %>
        <% end %>

3 个答案:

答案 0 :(得分:1)

链接是自包含的:它们只关心自己的论点中的内容。

如果您想从页面上的字段提交参数,则需要将这些字段包装在表单中并提交表单。

如果您想将这些数据放入链接,那么您可以更改link_to:

    <%= link_to 'Go', currencies_path(page => 1), :remote => true, method: :get, class: "btn btn-default", id: "show-button" %>

答案 1 :(得分:1)

这将发送作为文本字段标记的一部分输入的值。

<%= form_tag currencies_path, :method => :get do %>
      <%= text_field_tag :page, nil, class: 'form-control', id: 'show-page'%>
      <%= submit_tag 'Go' %>
<% end %>

我不确定为什么你将params [:page]设置为text-field的值。或者我在这里错过了什么?

如果您想使用params [:page],请将其设置为操作中的变量,

@page_number = params[:page]

html应更改为,

<%= text_field_tag :page, @page_number, class: 'form-control', id: 'show-page'%>

答案 2 :(得分:0)

我不主张为hiddentext字段提交相同的值:

<%= form_tag currencies_path, method: :get do %>
   <%= text_field_tag :page, params[:page], class: 'form-control', id: 'show-page'
   <%= submit_tag "Go" %>
<% end %>

您必须记住,您当前的表单使用remote: true,这是Rails UJS的ajax包装器。因此,如果您想检查发生了什么,您需要确保已从表单声明中删除remote: true

-

如果您想静态设置值(IE用户无法更改),您需要查看button_to,因为这可以通过params通过hidden字段:

<%= button_to "Go", currencies_path, method: :get, params: { page: "1" } %>

这个问题是您无法更改视图中的页面(在params散列中指定的值将是静态的)。

相关问题