В моем проекте истории принадлежат пользователям, и, как правило, доступ к ним осуществляется через вложенные ресурсы, за исключением действия по отображению глобального списка всех историй.В моем файле rout.rb у меня есть:
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
следующие вызовы GET для :all_stories
генерируют перечисленные ошибки:
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
в моем контроллере?