【问题标题】:Dynamically insert params to link_to in Rails在 Rails 中动态插入参数到 link_to
【发布时间】:2013-02-15 05:19:51
【问题描述】:

在我的主页上,我有一个输入框,用户可以输入搜索查询。然后我有一个link_to,它将使用搜索查询向不同的页面(搜索页面)发出获取请求。按照设计,我不能使用 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 ...
          });
  });

谢谢。

【问题讨论】:

    标签: ruby-on-rails ajax submit


    【解决方案1】:

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

    为确保您的帖子链接的查询正确匹配,您应该将特定 ID 添加到您的 <%= link_to %>

    <%= 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 以更新页面上的其他内容,则第二种方法将不起作用。另一方面,如果您只想在点击时执行搜索,这将更加高效。

    【讨论】:

    • 非常感谢,奥斯汀。这正是我正在寻找的。​​span>
    • 好的,等等,你现在要对那个查询做什么?我的意思是,为什么不点击链接到文本框的 val()。
    • 哇,这更有意义。不知道为什么我的大脑总是看不到简单的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    相关资源
    最近更新 更多