簡體   English   中英

ActiveRecord上的Ruby on Rails更改方法不起作用?

[英]Ruby on Rails chaning methods on ActiveRecord doesnt work?

我得到了這段代碼,當我嘗試使用第二種更優雅的方法時,我得到了“缺少方法”。 我認為位於http://guides.rubyonrails.org/active_record_querying.html的文檔是沒有幫助或不完整的。 有任何想法嗎?

順便說一句,隨時幫助編寫一個更加“單一”的優雅方法:)

  def index
@sortby = params[:sort_by]

# THIS WORKS

#if @sortby == nil
#  @movies = Movie.all
#else
#  @movies = Movie.order(@sortby)
#end

# THIS DOESNT. WHY? I THOUGHT METHOD CHAINING AND LAZYLOAD WOULD WORK.
@movies = Movie.all
@movies = @movies.order(@sortby) unless @sortby == nil

結束

all加載記錄並返回數組。 嘗試使用scoped

@movies = Movie.scoped
@movies = @movies.order(@sortby) unless @sortby.nil?

您可以一行完成此操作。

@movies = params[:sort_by].nil? ? Movie.all : Movie.order(params[:sort_by]).all

我想在您的情況下,您會遇到有關“數組的未定義方法順序”的錯誤。 ActiveRecord方法.all返回數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM