在我的项目中,故事属于用户,通常所有的故事访问都是通过嵌套资源进行的,除了显示所有故事的全局列表的操作。在我的路线上。我有:
resources :users do
resources :stories
end
match "/all_stories" => "stories#all_stories"
match
语句生成以下路由:
all_stories /all_stories(.:format) {:controller=>"stories", :action=>"all_stories"}
在我的stories_controller.rb
文件我有一个动作叫:all_stories
。
def all_stories
@stories = Story.all
end
从我的观点来看,我以这种方式调用link_to
:
<%= link_to "All Stories", all_stories_path %>
导致此错误:
No route matches {:action=>"show", :controller=>"stories", :user_id=>nil,
:id=>#<Story id: 1, title: "test story 01", desc: "Edited desc for test story 01",
activity: 20, created_at: "2011-11-28 01:07:08", updated_at: "2011-11-28 01:26:31",
user_id: 5>}
在我的stories_controller_test.rb
中,以下对:all_stories
的GET调用生成列出的错误:
get( 'all_stories' )
Undefined method `story_path' for #<#<Class:0x0000010430da18>:0x00000101789d10>
get( :all_stories )
undefined method `story_path' for #<#<Class:0x00000102a178b0>:0x00000100ee9cc8>
get( '/all_stories' )
No route matches {:controller=>"stories", :action=>"/all_stories"}
get( {:action=>"all_stories"} )
No route matches {:controller=>"stories", :action=>"{:action=>"all_stories"}"}
在前两个示例中,没有"story_path",因为故事嵌套在用户下面。不知道接下来的两天会发生什么。我可以使用什么语法get
all_stories
动作在我的控制器?
尝试将路由更改为
match "/all_stories" => "stories#all_stories", :as => :all_stories
然后在代码中,可以引用all_stories_path
或all_stories_url
我得到了这个问题,但我能够解决它使用@控制器使用@contr