3

我有两个模型 Jobs 和 Questions。一份工作有很多问题,而问题属于一份工作。我已经在模型中设置了资源以及路线。我在尝试链接到 questions#index 页面上问题控制器的 Show 方法时遇到问题。我的 rake 路由说路径应该是 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#show 方法没问题。有关我的其余代码,请参见下文。

问题#index 视图

<% @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>

<% 结束 %>

问题控制器

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

路由.rb

 root :to => "pages#home"

 resources :jobs do
  resources :questions
 end

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

有关我的 rake 路线,请参阅此https://gist.github.com/1032734

提前感谢您的帮助,我已经有一段时间了,只是无法找出解决方案。如果您需要更多信息,请告诉我。

4

1 回答 1

3

可能是这样?

问题#index 视图

<% @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”字段吗?

于 2011-06-21T06:23:18.100 回答