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 ответ

Решение

Использование collection_select

<% from for @instancevar do |form| %>
     <%= form.collection_select :institution_id, Institution.all, :id, :name %> 
     # Do other stuff....
<% end %>
Другие вопросы по тегам