2

我有一个文本字段:

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

然后单击链接时,我想将此文本字段中的值传递给控制器​​方法。我不想使用表单和表单提交。

我的链接为:

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

对于这个“搜索”方法,我想传递文本字段值....也可以直接转到为这个动作“搜索”设计的页面“/home/search”

我该怎么做呢???谢谢...

4

3 回答 3

2

阅读此处链接_将参数与 url 一起发送并在目标页面上获取它们

<%= 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
于 2013-07-04T11:24:50.877 回答
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
于 2013-07-04T11:33:07.353 回答
0

尝试这样的事情......(未经测试)。这将为您提供逻辑。

<%= link_to "Go", "#", onclick: "window.location = \"www.sitename.com/home/search?q=\"+$(\"#keyword\").val()" %>
于 2013-07-04T11:23:38.110 回答