2013-11-06 2 views
0

У меня возникли проблемы с определением нового маршрута Rails для модели, которая переводит парам в другую модель, с которой она будет связана. У нас есть структура устаревших URL-адресов, поэтому, к сожалению, маршрут вложенных resource здесь не работает.rails пользовательский маршрут для модели с параметром

Я хотел бы определить «создать новый обзор» URL в /reviews/new/1234, где 1234 является book_id, что в ближайшее время, чтобы быть созданным Review должен ссылаться.

Мои маршруты (пропущено для краткости) определяются как:

get '/reviews/:book_id'   => 'reviews#index', :as => 'reviews_path' 
get '/reviews/new/:book_id', :to => 'reviews#new',  :as => 'new_review_path' 
post '/reviews/:book_id'   => 'reviews#create' 
get '/reviews/:book_id/:id'  => 'reviews#show' 
get '/reviews/:book_id/:id/edit' => 'reviews#edit', :as => 'edit_review_path' 
delete '/reviews/:book_id/:id'  => 'reviews#destroy' 

rake routes | grep review возвращается:

 reviews_path GET /reviews/:book_id(.:format)            reviews#index 
    new_review_path GET /reviews/new/:book_id(.:format)           reviews#new 
        POST /reviews/:book_id(.:format)            reviews#create 
        GET /reviews/:book_id/:id(.:format)           reviews#show 
    edit_review_path GET /reviews/:book_id/:id/edit(.:format)          reviews#edit 
        DELETE /reviews/:book_id/:id(.:format)          reviews#destroy 

В моем шаблоне вида у меня есть:

<%= link_to 'new review', new_review_path(book_id: @book.id) %> 

который терпит неудачу с:

ActionView::Template::Error (undefined method `new_review_path' for #<#<Class:0x007f818f7117c8>:0x007f818f70e208>): 

Для полноты моей Review модели выглядит следующим образом:

class Review < ActiveRecord::Base  
    attr_accessible :book_id, :title, :content, :tags 
    belongs_to :book 
end 

ответ

1

Снимите _path с конца :as условий на маршрутах. Прямо сейчас он ищет new_review_path_path.

Документация is here for using as.

+0

Что такое синтаксис уценки для facepalm.jpg? Спасибо, @CDub! –

+1

Не стоит беспокоиться о человеке. У меня есть синтаксис markdown для facepalm.jpg в качестве макроса, поскольку я использую его несколько раз в час, поэтому не помню. :) Иногда вам просто нужны лишние глаза. – CDub

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