我使用simple_form和twitter boostrap结合使用我的rails应用程序。而且我有一个问题阻止了我。
<%= 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的普通输入字段,我不知道为什么。
有什么想法吗?
答案 0 :(得分: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 %>
希望这有帮助。
答案 1 :(得分:1)
我需要更多信息来帮助你。
你能发布你的模特吗?或解释@types
是什么以及它是什么。
这是关联的基本简单:
模型/ type.rb
belongs_to :post
模型/ post.rb
has_many :types
视图/后/ _form.html.haml
= f.association :types
确保您有一个名为&#34; title&#34;的列。或&#34;名称&#34;对于类型。
答案 2 :(得分:1)
在呈现操作新或之前,您需要在方法创建或更新中设置 @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