0

这里是一个完整的 Rails 初学者。如何处理 Rails 中的查询字符串?例如:www.something.com/movie?sort=title

为了实现 haml 文件中的视图,我该如何制作以便单击电影标题将发送该查询字符串,更重要的是如何处理它。我应该在哪里实现可以使用 :params 访问该查询字符串的函数。

我已经研究了一天多,无法理解该查询字符串是否会从帮助程序调用控制器函数或模块。

我希望我对这个问题足够清楚。任何帮助将不胜感激。

PS:- 有一个电影表,标题是它的列之一。

4

2 回答 2

0

不知道我真的明白你想要什么。这适合你吗?

link_to "My Link", movie_index_path(sort: :title)

然后使用 ? 访问参数params[:sort]

movie_index_path根据你的路线配置)

于 2013-02-05T09:28:00.107 回答
0

由于您的问题没有重点,让我假设您的问题的一部分。

假设

  1. 您在 app/controllers/ 中有一个控制器名称 movies_controller.rb
  2. 文件夹您在 app/models 文件夹中有一个名为 movie.rb 的模型

然后你应该告诉 Rails 将带有路径 /movies 的请求路由到 movies_controller.rb。这可以通过在 config/routes.rb 中添加以下行来完成

resources :movies

如果您调用 www.something.com/movies,这将调用 movies_controller.rb 中的方法索引。所以你应该写一些代码来在这里显示电影。

class MoviesController < ApplicationController
 def index
   @movies = Movie.all
 end
end

然后你应该使用 app/views/movies/index.haml 文件来显示电影。有一个链接可以按标题对电影进行排序。

link_to "Sort by title", movies_path(:sort=>"title")

不,当单击链接时,用户现在将使用参数到达相同的索引方法。您可以获得如下所示的排序值。

params[:sort]

所以要支持排序,您需要稍微更改控制器代码。

class MoviesController < ApplicationController
 def index
  if params[:sort]
   @movies = Movie.order('#{params[:sort]} ASC')
  else
    @movies = Movie.all
  end
 end 
end

我强烈建议您在提问之前浏览http://guides.rubyonrails.org/index.html 。

于 2013-02-05T10:19:11.957 回答