这里是一个完整的 Rails 初学者。如何处理 Rails 中的查询字符串?例如:www.something.com/movie?sort=title
为了实现 haml 文件中的视图,我该如何制作以便单击电影标题将发送该查询字符串,更重要的是如何处理它。我应该在哪里实现可以使用 :params 访问该查询字符串的函数。
我已经研究了一天多,无法理解该查询字符串是否会从帮助程序调用控制器函数或模块。
我希望我对这个问题足够清楚。任何帮助将不胜感激。
PS:- 有一个电影表,标题是它的列之一。
这里是一个完整的 Rails 初学者。如何处理 Rails 中的查询字符串?例如:www.something.com/movie?sort=title
为了实现 haml 文件中的视图,我该如何制作以便单击电影标题将发送该查询字符串,更重要的是如何处理它。我应该在哪里实现可以使用 :params 访问该查询字符串的函数。
我已经研究了一天多,无法理解该查询字符串是否会从帮助程序调用控制器函数或模块。
我希望我对这个问题足够清楚。任何帮助将不胜感激。
PS:- 有一个电影表,标题是它的列之一。
不知道我真的明白你想要什么。这适合你吗?
link_to "My Link", movie_index_path(sort: :title)
然后使用 ? 访问参数params[:sort]?
(movie_index_path根据你的路线配置)
由于您的问题没有重点,让我假设您的问题的一部分。
假设
然后你应该告诉 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 。