2011-10-30 5 views
0

私は2つのエンティティ、ユーザと機関を持っていますが、それらは多対多の関係を持っています。フォーム提出からオブジェクトへのリンクレール

新しいユーザーと機関を作成するためのビューが設定されていますが、その2つをリンクする別のビューが必要です。レールコンソールで
は私がしなければならないすべては、コントローラは、作業の一部を

myuser.institutions << the_institution_i_just_created 

を行うことができますされているが、どのように提出し、フォームを処理するのですか?私は入力がすでに存在している機関に限定されるように選択ボックスを使用したいと思います。

<select id="institution_selection" name="institution_sel"> 
<% selections = [] 
    Institution.all.each do |institution| 
     pair = [institution.name, institution.id] 
     selections.concat([pair]) 
    end 
    %> 
    <%= options_for_select(selections) %> 
</select> 

したがって、この提出物をオブジェクトにマップすると、コントローラーでそれをリレーションに追加することができますか?

さてさて、そう、これは私が思いついた解決策ですが、私はそこにそれについて移動する良い方法があると私はそれに見ていきましょうと確信しているが、少なくとも、I:

ソリューションでした使用して、

<%= form_tag("https://stackoverflow.com/users/test", :method => "post") do %> 
<%= collection_select :institution, :id, Institution.all, :id, :name %> 
<%= submit_tag("Search") %> 
<% end %> 

答えて

0

collection_select

を私は

def test 
    if !session[:user] 
    redirect_to users_path, notice: "Please login first" 
    end 
    if params[:institution] 
    @user = User.find(session[:user]) 
    @institution = Institution.find(params[:institution][:id]) 
    @user.institutions << @institution 
    redirect_to @user, notice: "Institution was successfully added " 
    end 
end 

を目指していたものに近いものを持って、ビューのために

+0

これは選択ボックスでうまく機能しました。私がそれをやっていたよりもはるかに簡単ですが、上記のinstancevarをコントローラで使用できるものにリンクするにはどうすればいいですか? コントローラーでどうすればそれにアクセスできますか – lukecampbell

+0

「sthへのリンク」とはどういう意味ですか? – davidb

+0

私はかなり近づきました。私はもっと評判がなくなるまで私自身の答えを掲示することが許されないので、私は "質問"を変更しました... – lukecampbell

関連する問題