2016-04-23 10 views
1

Ich arbeite an einer App und ich habe 2 Modelle. Kategorien, in denen ich Kategorienamen und Fragen erstelle. Kategorie has_many Fragen und Frage gehört_to Kategorie.
Ich habe category_id zum Fragenmodell hinzugefügt.Schienen - So rufen Sie Werte von einem Modell in ein anderes Modell

Nun muss ich alle Category_names nehmen und sie in Form anzeigen, wo ich Frage erstellen, so dass Benutzer wählen kann, in dem category_name Frage speichern wird.

Ich habe so etwas in der ersten Zeile Code versucht, aber nicht funktioniert.

<%= f.input :category_id, Category.all.map(&:name) %> 
<%= f.input :question_name, wrapper: :vertical_text_input, as: :text %> 
<%= link_to "Markdown help", "http://assemble.io/docs/Cheatsheet-Markdown.html", target: "_blank", class: "right" %> 
<%= f.input :answer %> 
<%= f.input :image, as: :attachinary %> 

FRAGE: Wie alle Kategorienamen in Form anzuzeigen, in dem ich neue Fragen erstellen?

Antwort

2

Sie wollen eine Auswahlbox verwenden können und verwenden Sie die collection select Schienen Helfer:

f.collection_select(:category_id, Category.all, :id, :name) 
+0

Es funktioniert, aber wenn ich Seite öffnen, in dem diese Form ist, es zeigt mir nicht collection_select bis ich Seite aktualisieren. Dann lädt das Auswahlfeld. Ich weiß nicht, warum das passiert. – RubyDigger19

0

Sie können auch auf diese Weise nutzen.

<%= f.select :category_id, Category.all.map(&:name), {prompt:"Choose Category"}%> 

@Jhon Vorschlag.

<%= f.select :category_id, Category.pluck(:name), {prompt:"Choose Category"}%> 
+1

'Category.pluck (: name)' ist schneller als die oben genannten –