Rails - параметр pass id в link_to
Я пытаюсь передать параметр текущей страницы (id) на следующую страницу, чтобы я мог создать зависимую запись модели.
то есть. Проекты имеют ставки, заявки принадлежат проектам.
Итак, на странице показа для проекта я добавил ссылку
<%= link_to "New Bid", new_bid_path(@project) %>
Что создает и выполняет URL-адрес.... "http://localhost: 3000/bids/new.2"
У меня
def new
@bid = Bid.new
@project = Project.find(params[:id])
end
в контроллере ставок, но я продолжаю получать ошибку "Не удалось найти проект без идентификатора"
???
Что происходит, почему я не могу передать идентификатор?
Ответы
Ответ 1
Если ваши ставки не являются вложенным ресурсом проекта, вы можете добавить project_id в качестве параметра в путь:
<%= link_to "New Bid", new_bid_path(:project => @project.id) %>
def new
@bid = Bid.new
@project = Project.find(params[:project])
end
иначе:
#routes.rb
map.resources :projects do |project|
project.resources :bids
end
<%= link_to "New Bid", new_project_bid_path(@project) %>
def new
@project = Project.find(params[:project_id])
@bid = @project.bids.build
end
Ответ 2
Хороший подход к таким проблемам, его посмотреть, что вы отправляете с параметрами. Это можно сделать с помощью отладки.
<%= debug params # or any variable%>
С этой информацией вы увидите (и узнаете), какие параметры вы отправляете контроллеру.