在视图haml文件中我有一个链接,当你点击时,你得到按标题或发布日期排序的所有电影。 控制器中的代码是:
def index
sort = params[:sort] || session[:sort]
case sort
when 'title'
ordering,@title_header = {:order => :title}, 'hilite'
when 'release_date'
ordering,@date_header = {:order => :release_date}, 'hilite'
end
# some more codes here
@movies = Movie.find_all_by_rating(@selected_ratings.keys, ordering)
end
如果我改变
ordering,@title_header = {:order => :title}, 'hilite'
到
ordering,@title_header = {:order => title}, 'hilite'
它出错了:
undefined local variable or method `title' for #<MoviesController:0xb29a853c>
答案 0 :(得分:7)
{:order => :title}
{:order => 'title'}
都会奏效。请查看此主题以了解字符串和符号之间的差异:What's the difference between a string and a symbol in Ruby?
{:order => title}
不起作用,因为您试图为您的哈希键分配title
局部变量中包含的值,但它不存在,因此崩溃
答案 1 :(得分:4)
:title
是一个符号。
title
是一个局部变量或方法。
您尚未在此范围内定义title
,因此您的undefined local variable or method 'title'
例外。
换句话说,不要这样做。
答案 2 :(得分:1)
您可能希望使用"title"
,字符串......
ordering, @title_header = {:order => "title"}, 'hilite'