2013-07-04 52 views
2

我有一個文本字段:text_field軌如何獲得價值

<%= text_field :search, :class=>'input-xxlarge search-query',:id=>'keyword' %> 

然後在一個鏈接的點擊我要在這個文本字段傳遞值到 控制器的方法。 我不想使用表單和表單提交。

我有鏈接爲:

<a href ="/home/search" >GO</a> 

和這個「搜索」的方法我想通過文本字段值.... 也可以直接轉到頁「/首頁/搜索」設計爲這個動作「搜索」

我該怎麼做? 謝謝...

+1

我知道你說你不想使用的形式。但這完全是**什麼形式。 – DickieBoy

+0

您可以在鏈接的點擊事件中使用ajax文章。 – Debadatt

回答

2

這裏閱讀link_to send parameters along with the url and grab them on target page

<%= link_to "Go", '/home/search?param1=value' %> 

所以,如果你不會使用表格,你應該使用jQuery現場認沽值到屬性鏈接(HREF)與參數。 例如在jsffidle

<%= text_field :search, :class=>'input-xxlarge search-query',:id=>'keyword' %> 
<%= link_to "Go", '', :id => "searchlink" %> 


$(':input').bind('keypress keydown keyup change',function(){ 
    var word = $(':input[id="keyword"]').val(); 
    $('a[id="searchlink"]').attr("href","/home/search?param1=" + word.toString()); 

}); 

和控制器:

if params[:param1] == "" 
render :search # or redirect whatever do you want 
else 
    param = params[:param1] 
    .... 
end 
0

嘗試類似這樣...(未測試)。這會給你邏輯。

<%= link_to "Go", "#", onclick: "window.location = \"www.sitename.com/home/search?q=\"+$(\"#keyword\").val()" %> 
1

在你的路由文件

resources :home do 
    member do 
     get 'search' 
    end 
end 

在HTML

<div id='parentDiv'> 
    <%= text_field :search, nil, :class=>'input-xxlarge search-query',:id=>'keyword' %> 
    <%= link_to("GO", '#', :class => 'search-link') 
</div> 

在JavaScript文件

$(document).ready(function(){ 
$('div#parentDiv').on('click', '.search-link', function(){ 
    var search_val = $('#keyword').val().trim(); 
    if(search_val != ''){ 
    window.location.href='/home/'+search_val+'/search'; 
    } else{ 
    alert('You need to enter some data'); 
    } 
}); 
}); 

而在你的搜索行動

def search 
    search_value = params[:id] 
    # your code goes here. 
end 
+0

你確定使用'params [:id]',id是整數嗎? 'window.location.href = '/家居/' + search_val +'/ search''?當我嘗試用字符串搜索時如何? –

+1

@anonymousxxx,params [:id]不是指任何id。我們通過使用params [:id]獲取參數,路由創建「search_home GET /home/:id/search(.:format)home#search」。是的,你也可以用字符串檢查它。 –

+0

+1好吧,我明白,謝謝..我認爲你的回答是更好的解決方法 –