Этот сводит меня с ума. У меня есть вложенные отношения между двумя моделями в моем проекте, и я решил, что не хочу, чтобы они были поверхностными, поскольку дочерний объект (годы) не имеет значения вне контекста родительского ( фестивали).
Таким образом, я как бы уменьшил связь везде, где мог найти ссылку на нее, но я обнаружил, что не могу получить доступ к странице для создания нового дочернего объекта.
Вот URL, как я понимаю, должен быть: /festivals/1/years/new
из route.rb:
resources :festivals do
resources :years
end
Из years_controller.rb:
# GET festivals/1/years/new
# GET festivals/1/years/new.json
def new
@festival = Festival.find(params[:festival_id])
@year = @festival.years.build
respond_to do |format|
format.html # new.html.erb
format.json { render :json => @year }
end
end
И кнопка, которую пользователи нажимают, чтобы перейти на новую страницу (на страницу Показать для родительского объекта):
<%= link_to 'Add Year', new_festival_year_path(@festival), :class => 'btn' %>
Это приводит пользователя к правильному URL-адресу, но я получаю:
No route matches {:action=>"show", :controller=>"years", :festival_id=>#<Festival id: 7, name: "Improganza", founded: nil, logo: "", mission: "This is that one that people spend a lot of money t...", city: "Honolulu", state_code: "HI", country_code: "US", created_at: "2013-07-26 14:49:19", updated_at: "2013-07-26 14:49:19">}
Я создал новый проект Rails и настроил скаффолды, используя гем Akria Matsuda nested_scaffold, просто чтобы сравнить результат с моим кодом... результирующие файлы выглядят так, как я показал здесь. Я понятия не имею, что мне может не хватать.
На всякий случай вывод моего rake routes
:
festival_years GET /festivals/:festival_id/years(.:format) years#index
POST /festivals/:festival_id/years(.:format) years#create
new_festival_year GET /festivals/:festival_id/years/new(.:format) years#new
edit_festival_year GET /festivals/:festival_id/years/:id/edit(.:format) years#edit
festival_year GET /festivals/:festival_id/years/:id(.:format) years#show
PUT /festivals/:festival_id/years/:id(.:format) years#update
DELETE /festivals/:festival_id/years/:id(.:format) years#destroy
festivals GET /festivals(.:format) festivals#index
POST /festivals(.:format) festivals#create
new_festival GET /festivals/new(.:format) festivals#new
edit_festival GET /festivals/:id/edit(.:format) festivals#edit
festival GET /festivals/:id(.:format) festivals#show
PUT /festivals/:id(.:format) festivals#update
DELETE /festivals/:id(.:format) festivals#destroy
GET /festivals(.:format) festivals#index
POST /festivals(.:format) festivals#create
GET /festivals/new(.:format) festivals#new
GET /festivals/:id/edit(.:format) festivals#edit
GET /festivals/:id(.:format) festivals#show
PUT /festivals/:id(.:format) festivals#update
DELETE /festivals/:id(.:format) festivals#destroy