2011-09-16 90 views
1

我有一个简单的Formtastic表单,嵌套模型如下。Rails formtastic自动为表单输入创建无序列表

<%= semantic_form_for @event do |form| %> 
    <%= form.input :user_id , :as => :hidden, :value => @user.id %> 
    <%= form.input :title %> 
    <%= form.input :invitations, :as => :check_boxes, :collection => Group.find(:all, :order => "name ASC"), :for => :invitations, :name => "Invitation", :include_blank => false %> 
    <%= form.buttons %> 
<% end %> 

不知何故,Formtastic把我投入一个无序列表如下:

enter image description here

我不知道如何可以改变,以解决这一问题的设置。

此外,对于复选框,Formtastic自动添加一个nill选项:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXX", "event"=>{"title"=>"test 15", "type"=>"", "invitation_ids"=>["", "2", "1"]}, "commit"=>"Create Event"} 

我应该怎样解决这个问题?

谢谢。

+0

你想让formtastic不自动创建一个无序列表吗?这就是它应该做的。另外,在create action而不是视图中设置user_id值通常效果更好。 – Preacher

+0

谢谢布道者。我刚刚安装了Formtastic,并生成了无序列表。我知道它不应该,但不知道如何解决它。也感谢您对隐藏字段的建议。 – AdamNYC

回答

7

我有这个完全相同的问题。以下是我固定它:

ERB

<div class="some_class"> 
    <%= semantic_form_for @event do |form| %> 
     <%= form.input :user_id , :as => :hidden, :value => @user.id %> 
     <%= form.input :title %> 
     <%= form.input :invitations, :as => :check_boxes, :collection => Group.find(:all, :order => "name ASC"), :for => :invitations, :name => "Invitation", :include_blank => false %> 
     <%= form.buttons %> 
    <%= end %> 
</div> 

CSS

.some_class { 
    li { 
     list-style-type:none; 
    } 
} 

我不能肯定,这是解决问题的绝对正确的方式,但对我来说它已经完成了我想要的事情。希望这可以帮助!

我曾尝试在表单中专门添加一个类,但那不是针对'li',因为它是该元素的子元素。由于formtastic创建了'li',我决定去'li'的父元素并从上到下进行定位。

0

这是formtastic的默认行为。 Formtastic带有自己的样式表来抑制子弹的显示并正确地格式化表单。您需要将其包含在您的布局中,然后覆盖任何不适合您网站的规则。

在Rails < 3.1有一个rake任务生成必要的文件:

rails generate formtastic:install

在3.1 + CSS的通过资产管道是可用的。