2017-10-18 1 views
0

Ich versuche, in Form zu machen wählen, aber es ist nicht für mich zu arbeiten, habe ich versuchtERB options_for_select mit padrino/sinatra

<%= f.select :children, options_for_select(@children.collect { |child| [child.name, child.id]}) %> 

Und

@children.collect { |child| [child.name, child.id]}) 

diese perfekt für mich arbeitet in neugierig sein.

=> [["Peter", 1], 
["John", 2], 
["Trish", 3], 

Aber es ist immer noch nicht auf

TypeError - no implicit conversion of Array into Hash: 

Ich bin wenig verloren :(

Haben Sie irgendwelche Tipps bekam bitte?

======== ==== EDIT:

Es ist in dieser Form

<% error = @class.errors.key?(:children) && @article.errors[:children].count > 0 %> 
<fieldset class='control-group <%= error ? 'has-error' : ''%>'> 
    <%= f.label :children, :class => 'control-label' %> 
    <div class='controls'> 
    <% @children = Children.all %> 
    <%= f.select :children, options_for_select(@children.collect { |child| [child.name, child.id]}) %> 
    <span class='help-inline'><%= error ? f.error_message_on(:children) : "Ex: Article category" %></span> 
    </div> 
</fieldset> 

<% @author = session[:account_id] %> 
<%= f.hidden_field :author, :value => @author %> 
<input name="author" form='article' type="hidden" value="4" /> 

<div class="form-actions"> 
    <%= f.submit pat(:save), :class => 'btn btn-primary' %> 
    &nbsp; 
    <%= f.submit pat(:save_and_continue), :class => 'btn btn-info', :name => 'save_and_continue' %> 
    &nbsp; 
    <%= link_to pat(:cancel), url(:articles, :index), :class => 'btn btn-default' %> 
</div> 

Die Form von

<ul class="nav nav-tabs"> 
    <li> <%= link_to tag_icon(:list, pat(:list)), url(:articles, :index) %></li> 
    <li class="active"> <%= link_to tag_icon(:plus, pat(:new)), url(:articles, :new) %></li> 
</ul> 
<div class="tabs-content"> 
    <% form_for :article, url(:articles, :create), :class => 'form-horizontal' do |f| %> 
    <%= partial 'articles/form', :locals => { :f => f } %> 
<% end %> 
</div> 

aufgerufen wird und es von der Steuerung aufgerufen wird, ich weiß nicht, wie dies ein wenig mehr löschte, es basiert auf db Modelle, kehren sie Daten wie ich geschrieben habe, aber diese Form funktioniert nicht. Ich habe versucht, einen neuen Teil des Formulars zu schreiben, und schon wieder das Problem.


Ich versuchte nur HTML-Formular zu verwenden, aber ich kann die Auswahl zum Senden von Daten über POST nicht sagen, ich in webmastering sehr schwach bin, bin ich nur Programmierer. Vielleicht ist das die Art und Weise, aber ich weiß nicht, wie man es richtig machen, wenn ich

setzen

und Werte (triftige konnte ich erzeugen wählen. Aber es hat nicht alle Daten gesendet.

+0

Kann nicht reproduziert werden. 'options_for_select ([[" Peter ", 1], [" John ", 2], [" Trish ", 3]]) =>" Peter \ n John \ n Trish "' ... Können Sie bitte eine [mcve] angeben? Das obige Beispiel funktioniert einwandfrei. –

+0

Oh, für mich ist es immer noch scheitern, es ist in Admin von Padrino generiert, ich werde versuchen, mehr Code zu posten, aber es ist in großen Projekt süchtig. Wird in einem Moment posten – Levi

+0

Was ist '@ children'? Sie haben nicht angezeigt, wo dies in Ihrem Code definiert ist. Ich bin auch verwirrt durch die Zeile: '@categories = Children.all' - du verwendest die '@ categories'-Variable nirgendwo? –

Antwort

0

ich das endlich lösen Problem gegoogelt ich einen anderen Stil der Nutzung

f.select(:state, :collection => @states, :fields => [:name, :id]) 

und ich habe die Daten von Modell direkt in Form und es funktioniert. die Dokumentation über die Formen I verwendet wurde, die andere Art und Weise unter Verwendung von Arrays und Hashes konstruiert, das ist besser Art und Weise.

Danke!