Ruby on rails Rails 3功能测试-';get()';can';无法访问控制器方法

Ruby on rails Rails 3功能测试-';get()';can';无法访问控制器方法,ruby-on-rails,testing,get,functional-testing,Ruby On Rails,Testing,Get,Functional Testing,在我的项目中,故事属于用户,通常所有故事的访问都是通过嵌套资源进行的,但显示所有故事全局列表的操作除外。在我的routes.rb文件中,我有: resources :users do resources :stories end match "/all_stories" => "stories#all_stories" match语句生成以下路由: all_stories /all_stories(.:format) {:controller=>"sto

在我的项目中,故事属于用户,通常所有故事的访问都是通过嵌套资源进行的,但显示所有故事全局列表的操作除外。在我的routes.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\u controller.rb
文件中,我有一个名为:
all\u stories
的操作

  def all_stories
    @stories = Story.all
  end
在我看来,我正在以这种方式调用
link\u至

<%= link_to  "All Stories", all_stories_path %>

在前两种情况下,没有“故事路径”,因为故事嵌套在用户下。不确定下两种情况下会发生什么。我可以使用什么语法来
获取控制器中的
所有故事
操作?

尝试将路由更改为

match "/all_stories" => "stories#all_stories", :as => :all_stories

然后在代码中,可以引用
所有故事路径
所有故事url

尝试将路由更改为

match "/all_stories" => "stories#all_stories", :as => :all_stories

然后在代码中,您可以引用
所有故事路径
所有故事url
我遇到了这个问题,但我可以使用@controller解决它
使用@control

我遇到了这个问题,但我可以使用@controller解决它
使用@contr

Solomon,谢谢你的建议,但它没有起作用。我做了你的更改,并将我的link\u to/get方法设置为引用:all\u stories\u path。我的link\u to语句(在视图中)错误为:没有路由匹配{:action=>“show”,:controller=>“stories”,:user\u id=>nil,:id=>\35;我的功能测试错误为:没有路由匹配{:controller=>“stories”,:action=>“/all_stories”}尝试将您的匹配所有故事行放在参考资料部分的上方。如果这不起作用,您的link_to语句是什么(可能有输入错误)?最后,为什么不添加控制器代码,因为其中可能有某些内容…我再次查看了您的注释中的错误,它似乎指向链接中的一个问题。在所有故事路径中,您不应该将故事作为:id参数传递。也许:所有故事路径没有问题,而在e为每个故事显示的行。请尝试不在页面上显示任何信息,以检查页面是否正确路由。Solomon-同意错误消息指向某些奇怪的内容。我已使用我的控制器的“所有故事”操作和我的“链接到”语句编辑了该问题。感谢您查看。Solomon-Fo感谢您的建议。我添加到上述问题的链接功能良好(您关于显示空白页的疑难解答提示向我展示了这一点)。问题出在目标视图(all_stories.html.erb)中每行语句的链接中我在其中有一个'@user'变量,但在控制器中没有声明'@user'变量(愚蠢的复制/粘贴错误)。最后,我需要为单个“@user less”故事创建一个新的操作和视图,并确保我的链接指向(指向此单故事视图)没有包含“@user”引用。谢谢!!!Solomon,谢谢你的建议,但它不起作用。我做了你的更改,并将我的link_to/get方法设置为reference:all_stories_path。我的link_to语句(在视图中)错误为:没有路由匹配{:action=>“show”,:controller=>“stories”,:user_id=>nil,:id=>#我的功能测试错误为:没有路由匹配{:controller=>“stories”,:action=>“/all_stories”}请尝试将匹配的all stories行放在参考资料部分上方。如果不起作用,您的link_to语句是什么(可能有输入错误)?最后,为什么不添加控制器代码,因为其中可能有某些内容…我再次查看了您的注释中的错误,它似乎指向链接中的一个问题。在所有故事路径中,您不应该将故事作为:id参数传递。也许:所有故事路径没有问题,而在e为每个故事显示的行。请尝试不在页面上显示任何信息,以检查页面是否正确路由。Solomon-同意错误消息指向某些奇怪的内容。我已使用我的控制器的“所有故事”操作和我的“链接到”语句编辑了该问题。感谢您查看。Solomon-Fo感谢您的建议。我添加到上述问题的链接功能良好(您关于显示空白页的疑难解答提示向我展示了这一点)。问题出在目标视图(all_stories.html.erb)中每行语句的链接中我在其中有一个'@user'变量,但在控制器中没有声明'@user'变量(愚蠢的复制/粘贴错误)。最后,我需要为单个“@user less”故事创建一个新的操作和视图,并确保我指向(指向此单故事视图)的链接不包含'@user'引用。谢谢!!!
match "/all_stories" => "stories#all_stories", :as => :all_stories