Jestem nowy w Ruby on Rails. Próbowałem przez dwa dni zdefiniować trasę dla metody w kontrolerze, ale pokazuje błąd "Brak dopasowania trasy [GET]". Oto kod
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
Oto mój plik trasy
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
Trasy pokazują moją nazwę trasy, ale kiedy trafię na trasę, pojawia się błąd "brak dopasowania" trasy.
route1: campaign_donations_create_user_account_path GET /campaigns/:campaign_id/donations/create_user_account(.:format) darowizny # create_user_account route2:
donations_create_user_account_path GET /donations/create_user_account(.:format)
donations#create_user_account
Chcę połączyć się z trasą 2, ale żadna trasa nie działa
Tak nazywam moją trasę 2
http://localhost:3000/donations/create_uer_account
Odpowiedzi:
1 dla odpowiedzi № 1Błąd jest związany z tym wierszem
resources :donations, except: [:new, :create]
jest przed innymi w routes.rb
. Railsuje mecze z pierwszą trasą znalezioną w pliku routes.rb.
Powinno to wyglądać mniej więcej tak
get "donations/create_user_account" => "donations#create_user_account"
resources :donations, except: [:new, :create]
następnie Rails pasuje do twojego create_user_account
pierwszy.