动态地将params插入到Rails中的link_to

在我的主页中,我有一个输入框,用户可以在搜索查询中输入。 然后我有一个link_to,它将使用搜索查询向不同的页面(搜索页面)发出get请求。 按照设计,我不能使用Rails form_for。

在检测到输入框中的更改后,如何将查询动态插入“link_to”?

这是一个模拟:

%input{:type => "text", :id => "my_input"} = link_to "Search", posts_path(query: "my_query_here") :javascript $(function(){ $("#my_input").change(function() { ... do something here ... }); }); 

谢谢。

你不能。 您的javascript无法入侵您的服务器端代码。 但是,它可以破解服务器端代码(HTML)的结果。

要确保您的post链接的查询匹配正确,您应该为<%= link_to %>添加特定ID:

 <%= link_to "Search", posts_path, :id => "search_link" %> 

那你的javascript应该是这样的:

 $("#my_input").change(function() { $("#search_link").attr("href","/posts?q=" + encodeURIComponent( $(this).val() ) ); }); 

感谢用户@ beck03076建议您只需在点击时执行位置更改,而不是每次输入更改时更新链接:

 $("#link").click(function() { $(this).attr("href", "/posts?q=" + encodeURIComponent($("#my_input").val())); }); 

根据您想要做什么,这可能与您的期望不完全一致。 例如,如果您有一些其他代码检查链接URL以更新页面上的其他内容,则第二种方法将不起作用。 另一方面,如果你想要的只是在点击上执行搜索,那么效率会更高。