Dav*_*age 6 ruby ruby-on-rails ruby-on-rails-3 twitter-bootstrap
如何从bootstrap集成一个typeahead,如下所示:
<input type="text" class="span3" style="margin: 0 auto;" data-provide="typeahead" data-items="8" data-source='["University of Pennsylvania","Harvard","Yale","Princeton","Cornell","Brown","Columbia","Dartmouth"]'>
Run Code Online (Sandbox Code Playgroud)
成为这样的标准形式:
<%= semantic_form_for(@education) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.input :college, placeholder: "Update Education" %>
</div>
<%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在你的控制器中
def index
@autocomplete_items = Model.all
end
Run Code Online (Sandbox Code Playgroud)
在您的视图中,就像您拥有选择器的附加ID一样......
<% semantic_form_for(@education) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.input :college, placeholder: "Update Education", id: "auto_complete" %>
</div>
<%= f.submit "Submit", class: "btn btn-large btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
最重要的是,将@autocomplete_items控制器中定义的实例变量传递到视图中的Javascript变量:
<%= javascript_tag "var autocomplete_items = #{ @autocomplete_items.to_json };" %>
Run Code Online (Sandbox Code Playgroud)
这将序列化您的数据并使其可用于Typeahead函数的JSON.
对于Typeahead,只需将该对象(@autocomplete_items)作为JSON传递给Javascript,如下所示:
<script type="text/javascript">
jQuery(document).ready(function() {
$('#auto_complete').typeahead({source: autocomplete_items});
});
</script>
Run Code Online (Sandbox Code Playgroud)
此外,还有一个用于Rails 3的Autocomplete gem,它可以直接与您的模型一起使用,而不是将对象传递给您的Javascript.文档中甚至还有一个Formtastic示例.
编辑:看起来我没有看完你的整个问题!不幸的是,目前不支持Formtastic的HTML5数据属性.然而,有一个单独的分支确实包括对这些属性的支持.
除此之外,总是只是坚持使用Good ol'HTML/ERB来实现这样的动态功能......
<input type="text" class="span3" style="margin: 0 auto;" data-provide="typeahead" data-items="8" data-source='<%= @autocomplete_items.to_json %>'>
Run Code Online (Sandbox Code Playgroud)
编辑2:我刚注意到两件事.首先是我将JSON对象传递给Javascript变量的方式(参见示例).其次,上面使用HTML5数据属性的示例不适用于Twitter的Typeahead插件,但它可以与jQuery UI Autocomplete 插件一起使用.
| 归档时间: |
|
| 查看次数: |
12029 次 |
| 最近记录: |