2017-04-15 72 views
-1

我是Ruby on Rails中的新成员。我一直试图在控制器中定义一个方法的路由,但错误显示“没有路由匹配[GET]”。 下面是代码Ruby on Rails中没有匹配的路径错误

donations Controller: 

before_action :set_donation, only: [:show, :edit, :update, :destroy, :create_user_account] 
    before_action :set_campaign, only: [:new, :create_user_account] 
//this is the method that i want to call 
    def create_user_account 
    end 

这里是我的路由文件

Rails.application.routes.draw do 
    resources :donations, except: [:new, :create] 
get 'donations/create_user_account' => 'donations#create_user_account' 
    resources :campaigns do 
    resources :donations, only: [:new, :create, :create_user_account] 
    get 'donations/create_user_account' => 'donations#create_user_account' 
    end 
    resources :organizations 

    devise_for :users 

    root to: "campaigns#latest" 
end 

的路线显示我的路由名称,但是当我打的路线出现“不匹配”的路线错误。

ROUTE1: campaign_donations_create_user_account_path GET /campaigns/:campaign_id/donations/create_user_account(.:format) 捐款#create_user_account 路径2:

donations_create_user_account_path GET /donations/create_user_account(.:format)  
donations#create_user_account 

我想打电话路线2,但没有路由工作

我打电话给我的路线2这样

http://localhost:3000/donations/create_uer_account 

这是错误 enter image description here

+0

你做错了,你应该阅读路线类型。 http://stackoverflow.com/questions/3028653/difference-between-collection-route-and-member-route-in-ruby-on-rails或在URL中发送ID作为查询参数。 –

+0

你正在附上一个与错字相关的错误create_uer_account ... – catch22

+1

@jenvvv编辑但同样的错误,根本不是问题。 – john

回答

1

的错误是因为该行

resources :donations, except: [:new, :create] 

是别人routes.rb之前。 Rails与它在routes.rb文件中找到的第一个路由相匹配。

它应该是这个样子

get 'donations/create_user_account' => 'donations#create_user_account' 
resources :donations, except: [:new, :create] 

然后Rails的与你create_user_account首先匹配。

+0

后更改代码根据您的意见错误显示 的ActiveRecord :: RecordNotFound在DonationsController#create_user_account 无法与 'ID'= 高清set_donation “@donation = Donation.find(PARAMS [找到捐赠:id])“ end 为什么它总是在set_donation方法内? – john

+0

因为你在'before_action'声明了 – Iceman

+1

仍然是同样的错误,我的代码是 before_action:set_donation,只有:[:create_user_account,:show,:edit,:update,:destroy] – john