0

2つのモデルの間に「関係」を作りたい。モデル User、モデル Prog、モデル Relationship があります。has_many :through リレーションシップでそれらを結び付けました。

私は、prog を User に追加する button_to が必要です。Relationship controller create で停止しました。ビルド方法を使用しますか?

 <%= link_to "+ Add Programme", :controller => "relationships", :action => "create", :method => "post", :id => @prog.id %>

def create
 @relationship = @user.relationships.build(params[:relationship])
  if @relationship.save
   redirect_to user_url
  end
end

明らかにここで何かが間違っていて、何が理解できません。

4

2 に答える 2

0

次のようなことができます。

def create
  @prog = Prog.find(params[:id])
  current_user.progs << @prog 
  redirect_to user_url
end

ただし、リレーションシップにビューがなく、これを使用してユーザー間のリレーションシップを作成する場合は、このアクションをユーザーまたはプログラム コントローラーに移動することを検討してください。おそらく、ユーザーに対して更新アクションを使用するだけです。私のより良い解決策は次のようなものです:

# in user show.html.erb or wherever you want it
<%= form_for @user do |f|
  <%= f.hidden_field "prog_ids[]", @prog.id %>
  <%= f.submit %>
<% end %>

# In user controller
def update
  @user = User.find(params[:id])
  if @user.update_attributes(params[:user])
    redirect_to user_url(@user)
  end
end
于 2013-05-10T20:47:12.577 に答える