rails - передает параметр id в link_to - PullRequest
25 голосов
/ 11 марта 2011

Я пытаюсь передать параметр текущей страницы (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

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

???

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

Ответы [ 2 ]

53 голосов
/ 11 марта 2011

Если ваши ставки не являются вложенным ресурсом проекта, вы можете добавить 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  
4 голосов
/ 11 марта 2011

Хороший подход к такого рода проблемам, это посмотреть, что вы отправляете с параметрами. Это можно сделать с помощью отладки.

<%= debug params # or any variable%>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...