2014-02-28 11 views
5

Я получаю ошибку маршрута без ошибок из строки <%= link_to "Ask User Out", askout_user_message_path(@user), :class => "button" %>.ActionController :: UrlGenerationError: Нет совпадений в маршруте

Это работало до того, как я добавил драгоценный камень, но теперь он перестает работать. Я пытался переехать под коллекцию, но мне не повезло с этим, так как это было раньше.

Маршруты:

resources :users do |user| 

resources :messages do 
    member do 
    post :new 
    get 'askout', action: 'askout' 
    end 
end 
    collection do 
    get :trashbin 
    post :empty_trash 

end 
end 

resources :conversations do 
    member do 
    post :reply 
    post :trash 
    post :untrash 
    end 
end 

Старые Маршруты:

resources :users do |user| 

    resources :messages do 
     collection do 
     post 'delete_multiple' 
     get 'askout', action: 'askout' 
     get 'reply', action: 'reply' 
     end 
    end 
    end 

Мои маршруты изменились, как я добавил mailboxer камень.

+0

Эта вложенная маршрут вывести идентификатор сообщения, так как вы определили запрос в члене ресурса: сообщения, используйте вспомогательный помощник следующим образом: 'askout_user_message_path (@user, message)' где сообщение - это сообщение, найденное с параметрами [: id] --- Если вы 't хочет, чтобы он нуждался в идентификаторе сообщения, поместил его в блок коллекции и использовал 'askout_user_messages_path (@user)' (множественное число в сообщениях) – MrYoshiji

ответ

5

Вы бы лучше сделать это:

#config/routes.rb 
    resources :users do 
    resources :messages do 
     member do 
     post :new 
     get :askout 
     end 
    end 
    collection do 
     get :trashbin 
     post :empty_trash 
     end 
    end 

Это даст вам:

users/1/messages/5/askout 

То, что я думаю, что вы хотите:

#config/routes.rb 
    resources :users do 
    resources :messages do 
     post :new 
     collection do 
     get :askout 
     end 
    end 
    collection do 
     get :trashbin 
     post :empty_trash 
     end 
    end 

Это даст вы:

users/2/messages/askout 

Хелпер путь будет, как определено в rake routes зрения - вы должны смотреть на это, чтобы получить представление о том, что называется ваш маршрут (позволяет писать соответственно)

+0

Я имел понимание между сборником и членом. Это похоже на то, что я хочу «курсы /: id/features», тогда он должен находиться под членом, если только «курсы/функции» затем собираются. Я понимаю это правильно? – 7urkm3n

+0

коллекция = 'курсы/функции', member =' курсы /: id/features', "none" = 'курсы /: course_id/features' –

+0

В member =' курсы /: id/features', какой тип 'ID' должен был пройти. если его вложенные маршруты, как в вашем ответе. – 7urkm3n

Смежные вопросы