将表单提交链接到对象的Rails

时间:2011-10-30 19:13:41

标签: ruby-on-rails ruby post submission

在rails项目中,我有两个实体,即用户和机构,他们有多对多的关系。

他们的观点是为了创造新的用户和机构而建立的,但我希望有另一种观点来联系这两者 在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 %>

1 个答案:

答案 0 :(得分:0)

使用collection_select

<% from for @instancevar do |form| %>
     <%= form.collection_select :institution_id, Institution.all, :id, :name %> 
     # Do other stuff....
<% end %>