1

在查看 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>
4

3 回答 3

7
{:order => :title}

{:order => 'title'}

两者都可以。查看此线程以了解字符串和符号之间的区别:Ruby 中的字符串和符号有什么区别?

{:order => title}

不起作用,因为您试图为哈希键分配一个包含在title局部变量中的值,但它不存在,因此它崩溃

于 2012-10-31T14:59:23.713 回答
4

:title是一个符号。 title是局部变量或方法。

您尚未title在此范围内定义,因此您的undefined local variable or method 'title'例外。

换句话说,不要那样做。

于 2012-10-31T14:58:33.620 回答
1

您可能想使用"title", 一个字符串...

ordering, @title_header = {:order => "title"}, 'hilite'
于 2012-10-31T14:59:29.927 回答