【问题标题】:Handling query string with rails使用 rails 处理查询字符串
【发布时间】:2013-02-05 09:23:56
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您的应用程序中是否有一个名为“movies”的控制器和一个名为movie.rb 的模型。如果有,我可以编写一些代码。如果您不知道什么是控制器和型号,请访问guides.rubyonrails.org/action_controller_overview.html
  • 是的,控制器和模型是存在的......但是,它是硬件任务的一部分,所以我更愿意自己编写代码......不过感谢链接。

标签: ruby-on-rails string controller helper


【解决方案1】:

不确定我是否真的了解您想要什么。这适合你吗?

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

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

(根据您的路线配置与movie_index_path一致)

【讨论】:

  • 如果您能指出我可以了解更多(阅读:一切从头开始)关于路线配置的地方,那将非常有帮助。
  • 不明白你的第一条评论。
  • 示例中的“我的链接”是表头的值。所以,当我尝试 %th link_to "Movie Title", Movie_index_path(sort :title) 时,它实际上将整个 "link_to "Movie Title", Movie_index_path(sort :title)" 显示为那个表格标题。
  • %th .. 你在使用 HAML?所以应该是%th= link_to...
【解决方案2】:

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

假设

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多