我是Rails的新手,對link_to方法有疑問。第二個參數應該是鏈接的url,它可以使用url helper方法生成。但是,可能需要傳遞:id作爲helper方法的參數,這可以通過傳遞一個對象(其id爲其屬性之一)來完成。URL助手方法使用什麼默認值:id?
那麼,在一種情況下,我沒有將對象傳遞給方法(在其中一個視圖中)。但是,url仍然能夠獲得正確的:id(大概使用前面定義的實例變量)。
當我甚至沒有傳入任何對象時,Rails如何爲id選擇值:
非常感謝!
編輯
下面是相關代碼:
link_to 'Find Movies With Same Director', same_dir_path
在這裏,我是一個 「秀」 頁面上的URL /movies/1
。 same_dir_path
是URL /movies/same_dir/:id
的幫助器方法,其中:id
將是傳遞對象的代碼,而movie#same_dir
是controller#action
。注意我沒有將任何對象傳遞給幫助程序方法link_to
,但是它從前一個url中獲取:id
(在本例中爲'1')。該URL甚至不相對於前一個(路徑不同)。
這是控制器方法(same_dir):
def same_dir
@movies = Movie.find(params[:id])
if (@movies.director.nil? || @movies.director == '')
flash.keep
redirect_to movies_path
flash[:warning]="'#{@movies.title}' has no director info"
return
end
@otherMovies = Movie.find_all_by_director(@movies.director)
end
這是routes.rb中代碼:
match 'movies/same_dir/:id'=> 'movies#same_dir', :as => :same_dir
resources :movies
只是一個提示,因爲你是Rails新手:常見模式'object.nil? || object =='''可以用'object.blank?'來表示,它也適用於數組和散列('array.nil?|| array.empty?'變成'array.blank?') – 2013-03-21 11:20:49