2

我将 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 的普通输入字段,我不知道为什么。

有任何想法吗?

4

3 回答 3

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

希望这可以帮助。

于 2015-06-17T07:51:09.193 回答
1

好吧,我需要更多信息来帮助你。你能发布你的模型吗?或解释它是什么@types以及它的用途。

这是关联的基本简单方法:

模型/type.rb belongs_to :post

模型/post.rb has_many :types

意见/帖子/_form.html.haml = f.association :types

确保您有一个名为“标题”或“名称”的列用于类型。

于 2012-08-13T08:59:32.793 回答
1

您需要在方法createupdate中设置@types ,然后再分别渲染操作newedit

例如

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
于 2014-03-16T23:19:12.630 回答