Ruby on Rails中没有匹配的Route错误

时间:2017-04-15 10:49:47

标签: ruby-on-rails routing

我是Ruby on Rails的新手。我已经尝试了两天来为控制器中的方法定义路由,但错误显示“没有路由匹配[GET]”。 这是代码

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

1 个答案:

答案 0 :(得分: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匹配。