2012-06-16 3 views
0

사용자, 학교 및 학교 그룹 모델로 소셜 네트워킹 사이트를 구축 중입니다. 사용자는 학교 그룹을 통해 has_many를 통해 학교에 가입하고 다른 역할을 수행합니다. 사용자가 클릭하여 학교에 지원할 수있는 온라인 form_for 버튼을 쓰는 데 문제가 있습니다. 학교 그룹 객체의 생성에 포함되어야하는 매개 변수는 user_id, school_id 및 '신청자'역할입니다. 나는 current_user.schoolgroups.build를 사용하여 폼을 생성 액션을 초기화하고 올바른 user_id를 포함하도록 할 수 있지만, 내가 겪고있는 문제는 new schoolgroup 객체를 생성하기 위해 컨트롤러에 school_id를 보내는 폼을 작성하는 방법이다. . 내 코드의 @school 인스턴스 변수는 올바른 코드가Ruby on rails 그룹에 사용자 추가

def create 
    @school = School.find(params[:schoolgroups][:school_id) 
    current_user.schoolgroups.build(school_id: @school.id, user_id: current_user.id, role: 'applicant') 
    respond_with school_path 
end 

<%= form_for(current_user.schoolgroups.build(params[school_id: @school.id]), 
                 remote: true) do |f| %> 
    <div><%= f.hidden_field :school_id %></div> 
    <%= f.submit "Apply", class: "btn btn-large btn-primary" %> 
    <% end %> 

답변

1

내가 이런 식으로 레일 정신

# in routes 
resources :schools do 
    member do 
    put :apply 
    end 
end 

# in schools_controller.rb 
def apply 
    @school = School.find(params[:id]) 
    @schoolgroup = current_user.schoolgroups.create(school: @school, role: 'applicant') 
    respond_with @schoolgroup 
end 

#in your view 
<%= link_to "Apply", apply_school_path(@the_school_var_you_define_somewhere), remote: true, method: :put, 
    class: "btn btn-large btn-primary" %> 
이 더 간단하다

등을 갈 것이어야한다 무엇 이건 그냥 자리 표시 자입니다.