2013-01-09 1 views
1

를 연결하고, 모델 학교클래스와 테스트 응용 프로그램을 제작하는 레일 3의 중첩 된 자원을 사용. 내 routes.rb 파일에서, 내가 가진 : 학교클래스에 대해 다음 모델 관계로제대로 나는 레일의 중첩 된 자원에 대한 더 나은 핸들을 얻기 위해 노력하고 모델

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에서 생성 된 게시물과 연결됩니다.. 좀 더 정확히 말하면 과 같은 도우미 메서드를 정의하여 school_id이 들어있는 URI의 첫 번째 절반을 가져올 수 있습니다. current_school.posts.all과 같은 컨트롤러에서 함수를 작성하면 자동으로 연결된 모든 게시물을 가져옵니다 school_id = URL에 무엇이 있는지. 감사!

* 편집하는 것은 여기

내가 ClassController에있는 것입니다 :

중첩 자원, 당신이 얻을
<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> 

답변

1

여러 도우미 :

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 파일에

설명 된대로 무료로 here 방법. 수업 인덱스 페이지가 될 것 동안

new_school_class_path(@school) 
new_school_class_path(@school_id) 

:

def index 
    @classes = current_school.classes 
end 

def new 
    @class = current_school.classes.build 
end 

private 
def current_school 
    @current_school ||= School.find(params[:school_id]) 
end 
: 당신의 ClassesController에서

school_classes_path(@school) 
school_classes_path(@school_id) 

, 당신은 같은 일을 할 것입니다 당신이 찾고있는 방법 중 하나로 기록 될 것이다

+0

감사합니다. 코드를 추가했는데 이제는'index'와 'new'함수가 잘 동작합니다. 그러나 'create'함수를 사용하면 "ID가없는 학교를 찾을 수 없습니다"라는 오류 메시지가 나타납니다. 위의 질문 본문에'form_for' 도우미가있는'new.html.erb'에 나타나는'create '함수와이 문제를 일으킬 수있는 것이 확실하지 않은 것을 모두 게시했습니다. 도와 주셔서 다시 한 번 감사드립니다! – daspianist

+1

@daspianist : new.html.erb 형식에서 : <% = form_for ([@ school, @class]) do | f | %>''<% = form_for ([@ current_school, @class]) do | f |를 읽어야합니다. %>' – PinnyM

+0

고맙습니다 - 잘 했어! 더 잘 이해할 수 있도록 도와 주셔서 감사합니다. – daspianist