【问题标题】:Rails - Debugging Nested RoutesRails - 调试嵌套路由
【发布时间】:2010-06-09 22:43:25
【问题描述】:

我有 2 个模型,评估和问题。评估有很多问题。

在路线中,我有:

map.resources :assessments, :has_many => :questions
map.root :assessments

我检查了 rake 路线,和预期的一样

在创建新问题的表单上,我收到以下错误:

undefined method `questions_path' for #<ActionView::Base:0x6d3cdb8>

如果我取出表单,视图加载正常,所以我认为这与视图中的代码有关-我在 form_for 行收到错误:

<h1>New question</h1>

<% form_for [@assessment, @question] do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :content %><br />
    <%= f.text_field :content %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Cancel', assessment_path(@assessment) %>

Rake 路由 - http://pastebin.com/6fKUPTjq

询问控制器的代码 - http://pastebin.com/URzpmEcg

评估控制器的代码 - http://pastebin.com/HstvFTq4

谁能帮我调试一下?谢谢!

【问题讨论】:

  • 我认为正确的方法应该是assessment_questions_path。不知道为什么会调用 questions_path。
  • 是的 - 我认为assessment_questions_path 应该这样称呼,但我不确定为什么不是这样。
  • 你能粘贴控制器的代码吗?
  • 完成 - 我添加了控制器代码。
  • 我不完全确定,但你知道 Rails 是否在嵌套路由的情况下自动为你定义 @assessment 吗?它可能为零。

标签: ruby-on-rails rails-models nested-routes


【解决方案1】:

你需要有

@assessment = Assessment.find(params[:assessment_id])

在控制器中。否则,@assessmentnil

【讨论】:

  • 感谢所有的帮助和耐心:)
猜你喜欢
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多