我是 Rails 新手,对 link_to 方法有疑问。第二个参数应该是链接的 url,可以使用 url 辅助方法生成。但是,可能需要将 :id 作为辅助方法的参数传递,这可以通过传递一个对象(该对象具有 :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
,但它:id
从前一个 url(在本例中为“1”)获取。该 URL 甚至与前一个 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