Ruby on rails ROR子资源形成问题
感谢大家以前的帮助。我将假设这将是一个非常有趣的问题,但这是我遇到的一个问题,我似乎无法解决它 基本上, 我正在跟踪几家医院的防火墙及其区域/接口。所以我的模型看起来像Ruby on rails ROR子资源形成问题,ruby-on-rails,resources,modeling,Ruby On Rails,Resources,Modeling,感谢大家以前的帮助。我将假设这将是一个非常有趣的问题,但这是我遇到的一个问题,我似乎无法解决它 基本上, 我正在跟踪几家医院的防火墙及其区域/接口。所以我的模型看起来像 Hospital |--> Firewall |--> fwzones 除了新的表格,我几乎把所有的事情都弄清楚了 这是我的路线 mine::Application.routes.draw do resources :hospitals do resources :firewalls
Hospital
|--> Firewall
|--> fwzones
除了新的表格,我几乎把所有的事情都弄清楚了
这是我的路线
mine::Application.routes.draw do
resources :hospitals do
resources :firewalls do
resources :fwzones
end
end
end
hospital.rb
class Hospital < ActiveRecord::Base
has_many :firewalls, :dependent => :destroy
end
在这里,您正在许多防火墙上调用fwzones
<%= form_for([@hospital,@hospital.firewalls.fwzones.build]) do |f| %>
应该是
<%= form_for([@hospital, @firewall, @firewall.fwzones.build]) do |f| %>
其他的只是对复数和不存在的变量的随机猜测
你似乎在猜测自己的路,我建议你买本书,好好学习。从长远来看,你会节省很多时间
谢谢你,马克。我实际上有两本ruby的书,但它们没有太多关于rails的内容,这真的很烦人。这解决了眼前的问题,但现在它说Model Hospital对fwzone中的任何方法都没有响应
class FwzonesController < ApplicationController
....
def new
@hospital = Hospital.find(params[:hospital_id])
@firewall = @hospital.firewalls.find(params[:firewall_id])
@fwzone = @firewall.fwzones.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @fwzone }
end
end
....
end
<%= form_for([@hospital,@hospital.firewalls.fwzones.build]) do |f| %>
Error: undefined method `fwzones' for #<Class:0x1bba030>
-------------------
<%= form_for([@firewall,@firewalls.fwzones.build]) do |f| %>
<%= form_for([@hospital,@firewalls.fwzones.build]) do |f| %>
Error: undefined method `fwzones' for nil:NilClass
-------------------
<%= form_for([@hospital.firewalls,@fwzones]) do |f| %>
Error: undefined method `model_name' for NilClass:Class
hospital_firewall_fwzones GET /hospitals/:hospital_id/firewalls/:firewall_id/fwzones(.:format) {:action=>"index", :controller=>"fwzones"}
hospital_firewall_fwzones POST /hospitals/:hospital_id/firewalls/:firewall_id/fwzones(.:format) {:action=>"create", :controller=>"fwzones"}
new_hospital_firewall_fwzone GET /hospitals/:hospital_id/firewalls/:firewall_id/fwzones/new(.:format) {:action=>"new", :controller=>"fwzones"}
edit_hospital_firewall_fwzone GET /hospitals/:hospital_id/firewalls/:firewall_id/fwzones/:id/edit(.:format) {:action=>"edit", :controller=>"fwzones"}
hospital_firewall_fwzone GET /hospitals/:hospital_id/firewalls/:firewall_id/fwzones/:id(.:format) {:action=>"show", :controller=>"fwzones"}
hospital_firewall_fwzone PUT /hospitals/:hospital_id/firewalls/:firewall_id/fwzones/:id(.:format) {:action=>"update", :controller=>"fwzones"}
hospital_firewall_fwzone DELETE /hospitals/:hospital_id/firewalls/:firewall_id/fwzones/:id(.:format) {:action=>"destroy", :controller=>"fwzones"}
hospital_firewalls GET /hospitals/:hospital_id/firewalls(.:format) {:action=>"index", :controller=>"firewalls"}
hospital_firewalls POST /hospitals/:hospital_id/firewalls(.:format) {:action=>"create", :controller=>"firewalls"}
new_hospital_firewall GET /hospitals/:hospital_id/firewalls/new(.:format) {:action=>"new", :controller=>"firewalls"}
edit_hospital_firewall GET /hospitals/:hospital_id/firewalls/:id/edit(.:format) {:action=>"edit", :controller=>"firewalls"}
hospital_firewall GET /hospitals/:hospital_id/firewalls/:id(.:format) {:action=>"show", :controller=>"firewalls"}
hospital_firewall PUT /hospitals/:hospital_id/firewalls/:id(.:format) {:action=>"update", :controller=>"firewalls"}
hospital_firewall DELETE /hospitals/:hospital_id/firewalls/:id(.:format) {:action=>"destroy", :controller=>"firewalls"}
hospitals GET /hospitals(.:format) {:action=>"index", :controller=>"hospitals"}
hospitals POST /hospitals(.:format) {:action=>"create", :controller=>"hospitals"}
new_hospital GET /hospitals/new(.:format) {:action=>"new", :controller=>"hospitals"}
edit_hospital GET /hospitals/:id/edit(.:format) {:action=>"edit", :controller=>"hospitals"}
hospital GET /hospitals/:id(.:format) {:action=>"show", :controller=>"hospitals"}
hospital PUT /hospitals/:id(.:format) {:action=>"update", :controller=>"hospitals"}
hospital DELETE /hospitals/:id(.:format) {:action=>"destroy", :controller=>"hospitals"}
<%= form_for([@hospital,@hospital.firewalls.fwzones.build]) do |f| %>
<%= form_for([@hospital, @firewall, @firewall.fwzones.build]) do |f| %>