是否可以在渲染部分传递Params?

时间:2011-12-02 04:07:27

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

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

将如何处理本地

我目前正在更新整个页面并将where子句与params一起使用 @articles = Article.where(:year => params[start_year]...params[start_year])

我想使用jquery清空此部分并使用滑块设置的值渲染新的部分集合。这是最好的做法吗?

1 个答案:

答案 0 :(得分:0)

我认为最好的选择是对控制器进行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