Ruby on rails Rails form-多个嵌套路由未定义方法'_路径';
此应用程序具有以下型号:Ruby on rails Rails form-多个嵌套路由未定义方法'_路径';,ruby-on-rails,forms,nested-resources,Ruby On Rails,Forms,Nested Resources,此应用程序具有以下型号: 农场(有许多:农作物) 作物(属于:农场,有许多:问题) 问题(属于:作物) 以下是路线: resources :farms do resources :crops do resources :issues end end 我希望用户能够从农场的“显示”页面创建一个新的“问题”,列出农场的所有作物。以下是导致服务器场显示页面出错的表单: 未定义的方法“裁剪问题路径”# 当作物和问题没有嵌套在农场下时,我使用了几乎相同的代码,并且它是有效的。我相信
resources :farms do
resources :crops do
resources :issues
end
end
我希望用户能够从农场的“显示”页面创建一个新的“问题”,列出农场的所有作物。以下是导致服务器场显示页面出错的表单:
未定义的方法“裁剪问题路径”#
当作物和问题没有嵌套在农场下时,我使用了几乎相同的代码,并且它是有效的。我相信问题是因为嵌套,但无法找到解决方案 我认为您的问题在于您正在将表单绑定到的对象。它应该是@farm,因为您在@farms show action中 我将其修改为:
<% @crops.each do |crop| %>
<%= crop.id %>
<%= form_for([@farm, crop, crop.issues.build]) do |f| %>
<%= f.text_area :notes %><br>
<%= f.submit "New Issue", :class => "button" %>
<% end %>
<% end %>
“按钮”%>
我的控制器是这样的:
class FarmsController < ApplicationController
def index
end
def show
@farm = Farm.find_by_id(params[:id])
@crops = @farm.try(:crops)
end
end
class FarmsController
在表单中添加“@farm”似乎解决了这个问题!不熟悉“@farm.try(:crops)”以及它与“@farm.crops”有什么区别?啊,很抱歉,这是我的懒惰-不想将crops添加到我的db中来测试场景,所以我添加了.try()
,这样它就不会在@crops
中出现空值
<% @crops.each do |crop| %>
<%= crop.id %>
<%= form_for([@farm, crop, crop.issues.build]) do |f| %>
<%= f.text_area :notes %><br>
<%= f.submit "New Issue", :class => "button" %>
<% end %>
<% end %>
class FarmsController < ApplicationController
def index
end
def show
@farm = Farm.find_by_id(params[:id])
@crops = @farm.try(:crops)
end
end