2

我正在使用simple_form與twitter boostrap結合起來用於我的rails應用程序。我有一個問題阻止了我。simple_form選擇字段在驗證後變成輸入字段

<%= f.input :title %> 
<%= f.input :url %> 
<%= f.input :tag_list, :label => 'Tags' %> 
<%= f.input :type_id, :collection => @types, :label_method => :type_name, :value_method => :id, :include_blank => false %> 
<%= f.input :description %> 

這使我很好的形式。但是,如果驗證失敗,則每個輸入字段都會顯示其錯誤。 但不是選擇字段,它只是從一個選擇字段變成一個正常的輸入字段填充ID,我不知道爲什麼。

任何想法?

回答

1

那麼我需要更多的信息來幫助你。 你可以發佈你的模型?或解釋什麼是@types是什麼和它是什麼。

這是用於關聯的基本簡單:

型號/ type.rb belongs_to :post

型號/ post.rb has_many :types

的意見/後/ _form .html.haml = f.association :types

確保您有一個名爲「標題」或「名稱」的類型的列。

+0

好的這個表單用於創建書籤和類型描述書籤類型如博客文章或論壇帖子。 和關聯是: type.rb'has_many:書籤' bookmark.rb'belongs_to:type' – Poisoned 2012-08-13 10:18:35

+0

你試過'= f.association:types'嗎? – hellocodes 2012-08-13 14:34:24

0

您需要設置@types創建更新方法之前,渲染動作分別

編輯例如

def new 
    @your_object = YourObject.new 
    @types = Type.all 
    .... 
end 

def create 
    @your_object = YourObject.new(your_object_params) 

    respond_to do |format| 
     if @your_object.save 
     format.html { redirect_to ... } 
     format.json { render action: 'show' ... } 
     else 
     ### ! init data for the form ! ### 
     @types = Type.all 
     format.html { render action: 'new' } 
     format.json { render json: ... } 
     end 
    end 
end 
2

對於一些原因,看來Rails + Bootstrap + Simple_form讓你在驗證集合被放入時選擇字段領域本身,而不是你的控制器的行動。這應該工作:

<%= f.input :title %> 
<%= f.input :url %> 
<%= f.input :tag_list, :label => 'Tags' %> 
<%= f.input :type_id, :collection => Type.all.order('type_name'), :label_method => :type_name, :value_method => :id, :include_blank => false %> 
<%= f.input :description %> 

希望這會有所幫助。

+0

奇怪的錯誤,只是面對它自己,不得不使用這個解決方案。不管怎麼說,還是要謝謝你! ;) – chemic 2015-10-22 22:09:43