ERB options_for_select with padrino / sinatra

时间:2017-10-18 07:57:31

标签: ruby erb

我试图在表单中选择,但它不适合我,我试过

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

并且

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

这对我来说非常适合撬。

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

但它仍未通过

TypeError - no implicit conversion of Array into Hash:

我有点失落:(

你有任何提示吗?

============ 编辑:

就是这种形式

<% 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>

表单由

调用
<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>

它是从控制器调用的,我不知道如何把它更多一点,它基于db模型,它们在我写的时候返回数据,但这种形式不起作用。我试着写下表单的新部分,但问题又来了。

我试图只使用html表单,但我无法告诉select通过POST发送数据,我在webmastering中非常弱,我只是程序员。也许就是这样,但是当我把

时,我不知道如何做对

和值(我能够生成正确的选择。但它没有发送任何数据。

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题,我用Google搜索了另一种用法

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

我将模型中的数据直接放入表单中并且可以正常工作。我使用的表单的文档是使用数组和散列的另一种方式构建的,这是更好的方法。

谢谢!