2012-06-16 110 views
0

我正在構建一個包含用戶,學校和學校組模型的社交網站。用戶通過學校小組通過has_many加入並在學校中扮演不同的角色。我無法編寫在線form_for按鈕,用戶可以點擊該按鈕向學校申請。我需要包含在創建學校組對象中的參數是user_id,school_id和角色「申請者」。我知道我可以使用current_user.schoolgroups.build讓表單初始化一個創建操作幷包含正確的user_id,但是我遇到的問題是如何編寫一個表單,它將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" %> 

這是simplier,多在Rails的精神。

相關問題