2016-09-12 9 views
0

Galerie, Kategorie werden mit Gerüst generiert und ich habe keine Änderungen in den Controllern sie haben eine has_and_belongs_to_many Zuordnung und die Join-Tabelle existiert. Die Kategorie existiert bereits und ich möchte es zu einem hinzufügen Galerie, die ich mit dem Formular erstellen, von dem der Code unten stammt.Übergeben viele zu viele Verknüpfung zur Datenbank

im Dropdown-Menü zeigt alle Kategorien in der database.I die Daten an die Datenbank senden möchten, also ich einen neuen Eintrag in der Tabelle beitreten möchte sagen, dass beide IDs enthält, während eine neue Galerie

Schaffung Hier

ist meine Form:

#_form.html.erb (For Galleries) 
<div class="dropdown"> 
    <%= f.label "Choose Category" %> 
    <%= f.select :id, Category.all.map{|g,v| [g.name,g.id]}, :class => 'dropdown-menu' %> </div> 
<div class="actions"> 
    <%= f.submit %> 
</div> 

Kann mir jemand sagen, was in meinem Controller ändert muss ich machen, um damit es funktioniert?

Antwort

0

Auschecken http://guides.rubyonrails.org/association_basics.html. Ich denke, es erklärt die Dinge sehr gut.

ich denke, es so etwas wie sein sollte:

category = Category.find_by(name: params[:name]) 
category.galleries.build(attributes) 
+0

Ich habe den Link vorher ausgecheckt, aber es hat mir überhaupt nicht geholfen. Kategorie hat nur: name (string) und ich möchte das zu der Galerie, die ich erstelle, hinzufügen. In welchem ​​Controller muss ich das hinzufügen? wäre es @ category.galleries.build (name) in meinem galerien_controller? –

+0

Ich würde ja in Ihrem gallery_controller vermuten. – sammygadd

+0

Übrigens. Willst du wirklich die has_and_belongs_to_many Verbindung? Es klingt wie Sie wollen: Klasse Galerie sammygadd

0

ich versuche zu helfen, was ich verstehen, benötigen Sie eine ID zu einer anderen Tabelle rechts zu retten?

<%= f.select :ids, options_from_collection_for_select(Category.all.sort_by(&:name), :id, :name, f.object._ids), {}, include_blank: true, multiple: true%> 

params für Controller

params.require(:sampletable).permit(:name, :ids => []) 

wenn ich falsch bin bitte korrigieren Sie mich, ich möchte Ihnen helfen, dank

+0

Ich musste ändern: ids zu: id und f.object._ids zu f.object_id, um auf die Seite ohne einen Fehler zuzugreifen. Ich versuche, die ID aus meiner Galerie zu speichern, die ich erstelle, und die ID aus einer Kategorie, die in diesem Formular in meiner Join-Tabelle ausgewählt wurde, die ich mit der has_and_belongs_to_many-Verknüpfung erstellt habe –

+0

ich denke, es funktioniert? – wiwit

0

ich eine Lösung dank einer Schritt für Schritt Anleitung finden war.

categories_controller:

@galleries = Gallery.all 
#had to add that to edit & new 

#category_params 
params.require(:category).permit(:name, :gallery_ids =>[]) 

gallery_controller:

#new,edit 
@categories = Category.all  

#category_params 
params.require(:gallery).permit(:title, :image, :description, :category_ids =>[]) 

Kategorien Ansichten:

#_form.html.erb 
<div class="field"> 
<%= collection_check_boxes(:category, :gallery_ids, @galleries, :id, :title) %> 
</div> 

#index.html.erb 
<p><%= category.galleries.map {|g| g.title}.join(', ') %></p> 

#show.html.erb 
<%= @category.galleries.map {|g| g.title}.join(', ') %> 

Galerie Ansichten:

#_form.html.erb 
<%= collection_check_boxes(:gallery, :category_ids, @categories, :id, :name) %> 

#index.html.erb 
<p><%= gallery.categories.map {|c| c.name}.join(', ') %></p> 

#show.html.erb 
<%= @gallery.categories.map {|c| c.name}.join(', ') %> 

Und es funktioniert jetzt.