Подтвердить что ты не робот

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

в контроллере ставок, но я продолжаю получать ошибку "Не удалось найти проект без идентификатора"

???

Что происходит, почему я не могу передать идентификатор?

4b9b3361

Ответ 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%>

С этой информацией вы увидите (и узнаете), какие параметры вы отправляете контроллеру.