Railsプロジェクトでは、ユーザーと機関という2つのエンティティがあり、それらには多対多の関係があります。
それらのビューは、新しいユーザーと機関を作成するために設定されていますが、2つをリンクするための別のビューが必要です。
Railsコンソールで私がしなければならないのは
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>
要約すると、この送信をオブジェクトにマップして、コントローラーでリレーションに追加できるようにするにはどうすればよいですか?
解決策は次のとおりです。
了解しました。これが私が思いついた解決策です。これについてはもっと良い方法があると確信しています。引き続き調査しますが、少なくとも私が目指していたものに近いものが得られました。
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
とビューのために
<%= form_tag("/users/test", :method => "post") do %>
<%= collection_select :institution, :id, Institution.all, :id, :name %>
<%= submit_tag("Search") %>
<% end %>