【问题标题】:Rails nested resource not rendering form on newRails 嵌套资源未在新资源上呈现表单
【发布时间】:2014-12-05 15:42:33
【问题描述】:

@reckoner has_many @shift_requirements 和路线,

resources :reckoners do
  resources :shift_requirements
end

在 reckoner_controller.rb 下的视图中,我有

<%= link_to 'create a shift', [:new, @reckoner, :shift_requirement]%>

... 触发包含表单助手的正确视图。然后它抛出错误 -

undefined method `shift_requirements_path' for #<#<Class:0x007f908e00a458>:0x007f908e8a09c8>

我怎么错了?

shift_requirement.rb 是 -

class ShiftRequirement < ActiveRecord::Base
  belongs_to :reckoner
end 

reckoner.rb 是 -

class Reckoner < ActiveRecord::Base
  has_many :shift_requirements
end

...表单中的视图现在是

<%= form_for(@reckoner, @shift_requirement) do |f| %>
...
<%= f.submit %>

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 routes form-for


    【解决方案1】:

    我假设您的表单有:

    <%= form_for(@shift_requirement) do |f| %>
      <%= f.submit %>
    <% end %>
    

    因为你想要的嵌套路由

    <%= form_for([@reckoner, @shift_requirement]) do |f| %>
      <%= f.submit %>
    <% end %>
    

    【讨论】:

    • 嗨 - 感谢您的回答。我进行了更改,但它引发了另一个错误 - ActiveModel::MissingAttributeError in ShiftRequirements#new can't write unknown attribute html'`
    • 所以ShiftRequirement 使用的是ActiveModel?您可以在您的问题中发布该课程吗
    • 如果其他人收到ActiveModel::MissingAttributeError - 请确保form_for 的参数作为数组form_for([@a,@b]) 传递,而不是作为两个单独的参数。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多