我正在学习ruby on rails,我执行了这个scaffolding命令:
rails g scaffold Alex
它为我创造了所有的资源。所以我试着从我的索引页链接到alex页,如下所示:
<%= link_to "Alex Link", alex_path(@alex) %>
(我仍然不确定“alex”部分是什么,但是在其他例子中,我试图在那里得到它)
在my routes.rb中创建了以下代码:
resources :alexes
get "home/index"
当我试图加载链接时,它给了我一个错误:
No route matches {:action=>"show", :controller=>"alexes"}
以防万一,这里是
rake routes
的输出: alexes GET /alexes(.:format) alexes#index
POST /alexes(.:format) alexes#create
new_alex GET /alexes/new(.:format) alexes#new
edit_alex GET /alexes/:id/edit(.:format) alexes#edit
alex GET /alexes/:id(.:format) alexes#show
PUT /alexes/:id(.:format) alexes#update
DELETE /alexes/:id(.:format) alexes#destroy
home_index GET /home/index(.:format) home#index
root / home#index
test POST /test(.:format) tests#create
new_test GET /test/new(.:format) tests#new
edit_test GET /test/edit(.:format) tests#edit
GET /test(.:format) tests#show
PUT /test(.:format) tests#update
DELETE /test(.:format) tests#destroy
我制作链接的方式有什么问题?在链接进入视图之前,我如何使它击中控制器?
谢谢!
最佳答案
alex_path
用于显示特定的对象。要使用它,Alex
需要是控制器加载的@alex
对象的实例。
你说你想链接到“alex页面”,这让我认为你想要所有Alex
对象的列表,或者你的Alex
的index
操作。如果是这样,您应该使用AlexController
而不是alexes_path
。
如果确实要链接到单个特定的alex_path(@alex)
,则需要从数据库中加载一个实例:
def my_action
# make a specific Alex object available to the view
@alex = Alex.find(...)
end
作为旁白,你也会问:
我怎样才能让它在进入视图之前击中控制器?
在呈现视图之前,您的控制器将始终被击中。如果不调用操作,则无法呈现视图。
关于ruby-on-rails - Rails-使用脚手架,错误链接到所创建的新资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10078483/