【发布时间】:2011-02-15 00:31:14
【问题描述】:
我正在创建嵌套资源 Foo 和 Bar,其中 Foo has_many Bars 和 Bar 属于_to Foo
这是 BarsController 中的新方法:
def new
@foo = Foo.find(params[:foo_id])
@bar = @foo.bars.build
end
这是 Bar 新视图的代码:
<%= form_for([@foo, @bar]) do |f| %>
<%= f.text_field :name %>
<%= f.submit "Save" %>
<% end %>
当我尝试加载“新栏”页面时,rails 说找不到值 Nil 的 model_name 方法。奇怪的是,这个稍微修改的视图代码可以工作:
<%= form_for([@foo, @foo.bars.build]) do |f| %>
<%= f.text_field :name %>
<%= f.submit "Save" %>
<% end %>
但是,当我将 logger.debug 语句放入 BarsController 的新方法中时,它永远不会运行。 rake routes 说并且服务器日志确认 BarsController#new 是被调用的操作,但是为什么新操作中的代码不会运行?我在这里遗漏了什么吗?
【问题讨论】:
-
如果你改用 f.fields_for 会怎样?
-
您帖子的第二行:应该是 FoosController 而不是 BarsController,不是?
-
您是否有任何
before_filters可能会阻止到达new操作?
标签: ruby-on-rails-3