【问题标题】:Is it possible to pass Params in render partial?是否可以在渲染部分中传递参数?
【发布时间】:2011-12-02 04:07:27
【问题描述】:

我正在使用 jQuery UI 滑块来动态更新页面上的项目。如何让控制器从滑块接收值?是否可以作为本地人传递此类信息?如果是这样,局部将如何处理本地

我目前正在更新整个页面并使用带参数的 where 子句。
@articles = Article.where(:year => params[start_year]...params[start_year])

我想只使用 jquery 来清空这部分,并使用滑块设置的值呈现一个新的部分集合。有这方面的最佳做法吗?

【问题讨论】:

    标签: jquery ruby ruby-on-rails-3 jquery-ui partial


    【解决方案1】:

    我认为最好的选择是对控制器进行 ajax 调用并通过它传递参数。

    然后,使用返回的信息,您应该重新填充页面中需要重新填充的部分。

    在你的路线中,你会想要这样的东西:

    get "article/between_years", :controller=>"article", :action=>"between_years"
    

    在您的控制器中,您将拥有该功能

    def between_years
      @articles = Article.where(:year => params[start_year]...params[start_year])
      render :layout=>false ### this line makes it so the application.haml (or html.erb) is not rendered along with your code)
    end
    

    在目录应用 > 视图 > 文章中,您将拥有要添加的 html 的 haml 或 erb 文件。

    那么您的 jquery 将如下所示:

    $.get("/article/between_years",{start_year:1991,end_year:2011},function(data, status, xhr){  /// does ajax call to the article route we set up above /
      ..
      $("body").append(data);  ///appends the html data returned to the body
                               ///you will probably want to change this a bit
                               ///so every thing is added to the proper place
      ...
    });
    

    我不久前写了另一个答案,概述了一个类似的工作流程,您可能想看看 => Auto populate text_fields based on selected item from another collection_select in Rails 3

    【讨论】:

    • 嘿@BananaNeil 感谢您的快速回复。我不得不在 between_years 视图中添加一些 jQuery 来清空正文并附加文章。每次滑动滑块时都会进行单独的调用,这导致文章多次附加。例如,如果您将结束日期从 2010 年滑到 2005 年,它将发布 2010-2011 年、2009-2011 年、2008-2011 年等所有文章。不确定我的 hack 是否仍然是最好的方法,因为仍在进行多次调用。我只是在视图中阻止它们。
    • 我根本不认为它是一种黑客行为。一切都取决于您要准确替换的内容。你甚至可以使用 $("body").html(data);这将完全取代正文的 html。如果您可以发布更多信息,我很乐意帮助您找到一个简单的电话解决方案。
    • 我实际上刚刚意识到 UI 滑块同时提供了“滑动”和“停止”事件。我从使用“幻灯片”事件切换到“停止”事件。这样,一旦用户停止执行幻灯片,我只会打一个电话(VS 在使用滑块时对每个值进行调用)。
    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多