作为Edx的SaaS课程的一部分,我的第一个rails应用程序挣扎。坚持一个可能相当基本的路由问题。
搜索,试用&错误只让我得到了下面的适度尝试,所以我现在正在给我的第一个镜头。
任务是在单击标题后使“电影”表的“标题”列可排序。到目前为止,我已经在下面添加了'link_to'..'movie_path ...'标记为粗体的部分。
%h1 All Movies
%table#movies
%thead
%tr
%th= link_to "Movie Title", movie_path(:sort => "title")
%th Rating
%th Release Date
%th More Info
%tbody
...
我的routes.rb文件只有基于resources :movies
的自动生成的路由。
为了处理'sort'选项,我改变了MoviesController的基本'index'方法,如下所示:
def index
sort = params[:sort]
@movies = Movie.find(:all, **:order => "title"**) **if :sort == "title"**
end
现在我收到此错误消息:
Started GET "/movies" for 127.0.0.1 at 2013-01-27 14:58:55 -0600
Processing by MoviesController#index as HTML
Rendered movies/index.html.haml within layouts/application (1.6ms)
Completed 500 Internal Server Error in 20ms
ActionView::Template::Error (No route matches {:action=>"show", :controller=>"movies"}):
4: %table#movies
5: %thead
6: %tr
7: %th#title_header= link_to "Movie Title", movie_path
8: %th Rating
9: %th Release Date
10: %th More Info
app/views/movies/index.html.haml:7:in `_app_views_movies_index_html_haml__237103960__639242128'
问题:
index
中包含'sort'选项吗? 提前致谢!
答案 0 :(得分:0)
那是一堂很棒的课!当他们说要问你是否自己无法解决时,我发现你正在注意。
正如评论建议的那样,您需要movies_path
,但您的代码还存在其他问题。
您当前设置了sort
变量,但是您正在检查:sort
这不是变量而是符号 - 基本上是常量。
此外,当您将if
放在行尾时,它会影响整行。所以你现在就拥有它,你永远不会分配@movies
。
我希望有所帮助。