2011-09-16 52 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的通過資產管道是可用的。