2013-02-09 80 views
4

此输入:如何摆脱封装simple_form中每个输入的div?

<%= f.input :keywords, label: false, :input_html => {:class => "span8"}, :placeholder => "Park Slope, Prospect Heights, Fort Green..." %> 

产生以下:

<div class="control-group string optional"> 
    <div class="controls"> 
    <input class="string optional span8" id="search_keywords" name="search[keywords]" placeholder="Park Slope, Prospect Heights, Fort Green..." size="50" type="text" /> 
    </div> 
</div> 

如何我刚刚产生input没有单独周围的div?

谢谢。

回答

13

所以看起来最好的方法是使用f.input_field

Simple_Form的文档不完全拼出来,但您可以查看实际的API docs here

从文档:

simple_form_for @user do |f| 
    f.input_field :name 
end 

方能产生:

<input class="string required" id="user_name" maxlength="100" 
    name="user[name]" size="100" type="text" value="Carlos" /> 
1

使用常规text_field

<%= f.text_field :keywords, :class => "string optional span8", :placeholder => "Park Slope, Prospect Heights, Fort Green..." %> 
+0

你是一个颠覆这个晚上,是不是你的家一样。好想法!事情是,虽然...我仍然想为我的表单中的其他元素使用'simple_form_for'字段。有没有办法禁用这些包装div? – marcamillion 2013-02-09 03:55:10

16

好做这样的事情通过一个PARAMS wrapper: false这样

<%= f.input :keywords, 
      label: false, 
      wrapper: false, 
      input_html: { class: 'span8' }, 
      placeholder: 'Park Slope, Prospect Heights, Fort Green...' %> 

,看看它的工作

希望这有助于

+0

几乎在那里。它摆脱了一个包装div。即从问题出发,它用'class =“控制组字符串可选的”''摆脱了div。它没有摆脱'div class = controls'。所以布局仍然破裂。思考? – marcamillion 2013-02-10 14:38:17

+0

唯一的包装代码是在问题中。你可以看到'input'的两个div。一个带有'control-group string optional'类,另一个带'controls'类。此外,'f.input ...'simple_form助手会产生该输出。你想看到其他的东西吗? – marcamillion 2013-02-12 08:38:08

+0

@marcamillion想看simple_form.rb代码 – Viren 2013-02-12 10:24:08