首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3路由

Rails 3路由
EN

Stack Overflow用户
提问于 2011-07-06 00:32:20
回答 2查看 259关注 0票数 1

我如何链接我的路线,以使规范通过?我已经阅读了这里的http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

规范

代码语言:javascript
复制
require 'spec_helper'

    describe ConversationMembersController do
      describe "routing" do
        it "recognizes and generates #index" do
          { :get => "/conversations/123/members" }.should route_to(:controller => "conversation_members", :action => "index", :conversation_id=>"123")
        end
      end
    end

失败的规范

代码语言:javascript
复制
ConversationMembersController routing recognizes and generates #index
     Failure/Error: { :get => "/conversations/123/members" }.should route_to(:controller => "conversation_members", :action => "index", :conversation_id=>"123")
       The recognized options <{"action"=>"123", "id"=>"members", "controller"=>"conversations"}> did not match <{"conversation_id"=>"123",
        "action"=>"index",
        "controller"=>"conversation_members"}>, difference: <{"conversation_id"=>"123",
        "action"=>"index",
        "id"=>"members",
        "controller"=>"conversation_members"}>

路线

代码语言:javascript
复制
resources :conversations, :except => [:edit] do
    resources :conversation_members, :as => "members", :except => [:show, :edit, :update, :destroy] do
      collection do
        delete :leave
      end
    end

rake routes | grep conversation_members的输出

代码语言:javascript
复制
52: leave_conversation_members DELETE /conversations/:conversation_id/conversation_members/leave(.:format)                                        {:action=>"leave", :controller=>"conversation_members"}
53: conversation_members GET    /conversations/:conversation_id/conversation_members(.:format)                                              {:action=>"index", :controller=>"conversation_members"}
54: POST   /conversations/:conversation_id/conversation_members(.:format)                                              {:action=>"create", :controller=>"conversation_members"}
55: new_conversation_member GET    /conversations/:conversation_id/conversation_members/new(.:format)                                          {:action=>"new", :controller=>"conversation_members"}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-06 01:55:57

尝尝这个?

代码语言:javascript
复制
resources :conversations, :except => [:edit] do
  resources :members, :controller => "conversation_members", :except => [:show, :edit, :update, :destroy] do
    collection do
      delete :leave
    end
  end
end
票数 1
EN

Stack Overflow用户

发布于 2011-07-06 01:24:31

从文档中可以看出:as选项只是更改了命名的helpers...so,实际的url仍然是

代码语言:javascript
复制
/conversations/xxx/conversation_members

但是您可以将该路由称为

代码语言:javascript
复制
conversation_members_path

请查看这篇关于routing的伟大指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6585914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档