Проблема маршрутизации Link_to с вложенными ресурсами - PullRequest
3 голосов
/ 21 июня 2011

У меня есть две модели Работа и Вопросы.Работа имеет много вопросов, и вопросы относятся к работе.Я настроил ресурсы в модели, а также маршруты.У меня возникла проблема при попытке link_to метода Show контроллера вопросов на странице вопросов # index.Мои рейк-маршруты говорят, что путь должен быть job_question_path с двумя необходимыми: id это: job_id и: id, поэтому я попытался:

<td><%= link_to 'Show', job_question_path(@job, question) %></td>

и получил ошибку:

No route matches {:action=>"show", :controller=>"questions", :job_id=>nil, :id=>#<Question id: 1, job_id: 1, question1: "sfsdfssfs", question2: "sfsdfs", question3: "sfsdf", question4: "sfsdfsf", question5: "sfsfsfs", created_at: "2011-06-21 03:25:12", updated_at: "2011-06-21 03:25:12">}

Я пробовал несколько других комбинаций, но ничего не работает, я продолжаю получать:

No route matches {:action=>"show", :controller=>"questions", :job_id=>nil } 

или какую-то их комбинацию.

Часть, которую я не делаю 'Это значит, что я могу вставить url / jobs / 1 / questions / 1, и я перехожу на страницу показа, поэтому я предполагаю, что мои вопросы # методы показа в порядке.Смотрите ниже для остальной части моего кода.

Вопросы # представление индекса

<% @questions.each do |question| %>
 <tr>
  <td><%= question.question1 %></td>
  <td><%= question.question2 %></td>
  <td><%= question.question3 %></td>
  <td><%= question.question4 %></td>
  <td><%= question.question5 %></td>
  <td><%= link_to 'Show', job_question_path(@job, question) %></td>
</tr>

<% end%>

Контроллер вопросов

def index
 @questions = Question.all

 respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @questions }
 end
end

def show
  @job = Job.find(params[:job_id])
  @question = @job.questions.find(params[:id])

 respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @question }
 end
end

Модели

class Job < ActiveRecord::Base
 has_many :questions

class Question < ActiveRecord::Base
  belongs_to :job

Routes.rb

 root :to => "pages#home"

 resources :jobs do
  resources :questions
 end

 get "pages/home"
 get "pages/about"
 get "pages/contact"

См. https://gist.github.com/1032734 для моих рейк-маршрутов.

Спасибо за любую помощь заранее, я занимаюсь этим уже некоторое время и просто не могу найти решение.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

3 голосов
/ 21 июня 2011

может быть так?

Вопросы # индексный указатель

<% @questions.each do |question| %>
 <tr>
  <td><%= question.question1 %></td>
  <td><%= question.question2 %></td>
  <td><%= question.question3 %></td>
  <td><%= question.question4 %></td>
  <td><%= question.question5 %></td>
  <%= link_to 'Show', job_question_path(question.job_id, question.id) %>
</tr>

Это должно работать. Или у вас нет поля 'job_id' в таблице вопросов?

...