0

ユーザー、学校、および学校グループ モデルを使用してソーシャル ネットワーキング サイトを構築しています。ユーザーは、has_many から schoolgroups を介して学校に参加し、さまざまな役割を果たします。ユーザーがクリックして学校に申し込むことができるオンラインの form_for ボタンを書くのに問題があります。schoolgroup オブジェクトの作成に含める必要があるパラメーターは、user_id、school_id、およびロール「applicant」です。current_user.schoolgroups.build を使用して、フォームに create アクションを初期化し、正しい user_id を含めることができることはわかっていますが、問題は、school_id をコントローラーに送信して新しい schoolgroup オブジェクトを作成するフォームを作成する方法です。 . 私のコードの @school インスタンス変数は、正しいコードが何であれ、単なるプレースホルダーです。

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 %>
4

1 に答える 1

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" %>

これはより単純で、Railsの精神に基づいています。

于 2012-06-16T08:44:57.973 に答える