![](/img/trans.png)
[英]Getting data from the DOM to pass via link_to to a rails controller
[英]pass params to controller method via link_to rails 4
我想將參數從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 %>
鏈接是獨立的:它們只在乎自己的論點。
如果要從頁面上的字段提交參數,則需要將這些字段包裝在表單中並提交表單。
如果要將數據放入鏈接,則可以將link_to更改為:
<%= link_to 'Go', currencies_path(page => 1), :remote => true, method: :get, class: "btn btn-default", id: "show-button" %>
這將發送作為文本字段標簽的一部分輸入的值。
<%= form_tag currencies_path, :method => :get do %>
<%= text_field_tag :page, nil, class: 'form-control', id: 'show-page'%>
<%= submit_tag 'Go' %>
<% end %>
我不確定為什么將params [:page]設置為文本字段的值。 還是我在這里想念什么?
如果要使用params [:page],請在操作中將其設置為變量,
@page_number = params[:page]
html應該更改為
<%= text_field_tag :page, @page_number, class: 'form-control', id: 'show-page'%>
我不建議為hidden
字段和text
字段提交相同的值:
<%= 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
,因為這可以通過hidden
字段傳遞params
:
<%= button_to "Go", currencies_path, method: :get, params: { page: "1" } %>
這樣做的問題是您無法更改視圖中的頁面(在params哈希中分配的值將是靜態的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.