У меня возникли проблемы с определением нового маршрута 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
Что такое синтаксис уценки для facepalm.jpg? Спасибо, @CDub! –
Не стоит беспокоиться о человеке. У меня есть синтаксис markdown для facepalm.jpg в качестве макроса, поскольку я использую его несколько раз в час, поэтому не помню. :) Иногда вам просто нужны лишние глаза. – CDub