1
我想要获得更好的Rail的嵌套资源句柄,并且使用模型School和类作了测试应用。在我routes.rb
文件,我有:使用Rails 3的嵌套资源来正确关联模型
resources :schools do
resources :classes
end
随着学校和级以下车型的关系:
class School < ActiveRecord::Base
attr_accessible: name
has_many :classes
end
和
class Class < ActiveRecord::Base
attr_accessible: name, school_id
belongs_to :school
end
我有困难得到school_id
与在像0这样的URL下创建的帖子相关联。更确切地说,我想定义一个像current_school
这样的帮助器方法,它可以将URI的前半部分包含school_id
,以允许我在控制器中编写函数,如current_school.posts.all
,该函数将自动提取与school_id
=网址中有什么。谢谢!
* 编辑
这是我在ClassController
:
class ClassesController < ApplicationController
def index
@classes = current_school.classes.all
end
def new
@class = current_school.classes.build
end
def create
@class = current_school.classes.build(params[:post])
if @class.save
redirect_to root_path #this will be further modified once I figure out what to do
else
redirect_to 'new'
end
end
private
def current_school
@current_school ||= School.find(params[:school_id])
end
end
而在new.html.erb
文件:
<div class="span6 offset3">
<%= form_for([@school, @class]) do |f| %>
<%= f.label :name, "class title" %>
<%= f.text_field :name %>
<%= f.submit "Create class", class: "btn btn-large btn-primary" %>
<% end %>
</div>
谢谢!我添加了代码,现在'index'和'new'函数正常工作。但是,使用我的“创建”功能,我得到一个错误“找不到没有ID的学校”。我已经发布了'create'函数以及'new.html.erb'中出现的'form_for'助手在上面的问题正文中,并且不知道是什么可能导致此问题。再次感谢你的帮助! – daspianist
@daspianist:在你的new.html.erb表单中:'<%= form_for([@ school,@class])do | f | %>'应该读取<%= form_for([@ current_school,@class])do | f | %>' – PinnyM
谢谢 - 非常棒!感谢您帮助我更好地理解这一点。 – daspianist