Dans un projet de rails, j'ai deux entités, Utilisateurs et Institutions, elles ont une relation plusieurs-à-plusieurs. Les points de vue pour eux sont configurés pour créer de nouveaux utilisateurs et institutions, mais je veux avoir une autre vue pour relier les deux. Dans
rails consolent tout ce que je dois faire estRails reliant la soumission de formulaire à l'objet
myuser.institutions << the_institution_i_just_created
Le contrôleur peut faire une partie du travail, mais comment puis-je gérer les soumissions et les formulaires? Je veux utiliser une boîte de sélection afin que la contribution soit limitée aux institutions déjà existantes.
<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>
La question est en résumé comment puis-je mapper cette soumission à un objet de telle sorte que dans le contrôleur que je peux faire ajouter à la relation?
La solution est:
Bon, c'est la solution que je suis venu avec, je suis sûr qu'il ya une meilleure façon de s'y prendre et je vais continuer à examiner, mais au moins je a quelque chose à ce que je visais
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
et pour la vue
<%= form_tag("https://stackoverflow.com/users/test", :method => "post") do %>
<%= collection_select :institution, :id, Institution.all, :id, :name %>
<%= submit_tag("Search") %>
<% end %>
Cela a très bien fonctionné pour la boîte de sélection! Beaucoup plus simple que la façon dont j'y allais mais comment lier (at) instancevar ci-dessus à quelque chose que je peux utiliser dans le contrôleur. donc dans le contrôleur comment puis-je accéder à ce – lukecampbell
que voulez-vous dire par "lien vers sth."? – davidb
Je suis assez proche, j'ai changé la "question" parce que je ne suis pas autorisé à poster ma propre réponse jusqu'à ce que j'ai plus de réputation ... – lukecampbell