<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :remote => true, :method => :post %>
是否有任何方法將search_name文本字段的值與給定鏈接一起傳遞?將text_field的值傳遞給link_to
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :remote => true, :method => :post %>
是否有任何方法將search_name文本字段的值與給定鏈接一起傳遞?將text_field的值傳遞給link_to
如果您嘗試將值發佈到服務器,您應該使用HTML表單。這就是他們所設計的。實際上,當您指定:method => :post
作爲link_to
助手的選項時,Rails會動態創建一個HTML表單,該表單在單擊鏈接時立即發送。爲什麼不這樣做呢?
<%= form_tag '/save_search' do -%>
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= submit_tag 'Save search' %>
<% end -%>
這將張貼值到服務器(如params[:search_name]
控制器動作中訪問)等所要求的。
如果它的美學問題(例如,你認爲按鈕是醜陋的,想要鏈接代替),你總是可以使提交按鈕看起來像一個普通的舊CSS鏈接。對用戶來說,它看起來像一個鏈接,但更重要的是,它的行爲就像一個按鈕,並提交表單時不需要任何額外的邏輯。
如果您仍然不相信使用表單是一種方式,並且您非常希望使其能夠工作,那麼您可以使用jQuery來完成此操作。讓我們把你的示例代碼,並稍微修改
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :id => 'save_search' %>
內。然後你application.js
,你可以添加以下。
$(function() {
// Add click event binding to `Save search` link
$("#save_search").on("click", function(event) {
event.preventDefault(); // don't trigger default
// get the value inside the text field
var name = $("#search_name").val();
$.post('/save_search', { search_name: name }, function(data) {
// log the result from the server, or whatever...
console.log(data);
});
});
});
當有人點擊「保存搜索」鏈接,將會使一個AJAX調用與指定數據的服務器(除非用戶做了一些愚蠢的類似禁用javascript),此事件將被解僱。控制器操作將能夠通過params[:search_name]
訪問此數據。希望這可以幫助。快樂的編碼!
此答案使用'form_tag'和'submit_tag'問題如何使用'text_field_tag'和'link_to'。這是導入,因爲有些時候已經有一個表單,表單不能嵌套。 – 23inhouse
重複但這裏是一個答案:http://railspikes.com/2007/4/17/partial_dom_submit_with_link_to_remote
它可能需要修改軌道的新版本。 :submit
選項似乎沒有更多。如果鏈接轉到GET
操作,則可以使用javascript更改事件來更改鏈接上的href
。我確信有一種方法可以通過POST
操作來實現。
而且我用這個頁面得到它的工作:https://makandracards.com/makandra/1383-rails-3-make-link_to-remote-true-replace-html-elements-with-jquery
@some_value是Hash.So我想我不能用$。員額(URL,{} PARAMS像method.I必須使用的link_to。 – shajin
我認爲你可以使用「提交」而不是「link_to」作爲「保存搜索」,這會提交你的表單參數,然後你可以爲你的主要提交添加另一個提交,併發送到適當的動作 – cdesrosiers
@cdesrosiers但是我不知道'想要使用窗體.. – shajin