2013-08-10 25 views
13

Tôi thiếu gì ở đây? Tôi đang làm việc với Rails 4.0.0 và thử Bootstrap 3.0.0rc1 mới. Tôi có một ứng dụng 'công thức hộp' đơn giản có mô hình Công thức và mô hình Danh mục cung cấp trường 'danh mục' trên Công thức. Trong công thức chế độ xem # chế độ xem mới, tôi có các trường sau được xác định:Rails 4: collection_select không chèn thuộc tính 'class'?

<h1>Create New Recipe</h1> 
<%= form_for @recipe, html: { class: 'form-horizontal' } do |f| %> 
<fieldset> 
    <legend>Main Information</legend> 
    <div class="form-group"> 
    <%= f.label :name, "Recipe name", class: "col-lg-2 control-label" %> 
    <div class="col-lg-6"> 
     <%= f.text_field :name, class: "form-control" %> 
    </div> 
    </div> 
<div class="form-group"> 
    <%= f.label :category_id, class: "col-lg-2 control-label" %> 
    <div class="col-lg-6"> 
    <%= f.collection_select :category, Category.all, :id, :name, class: "form-control", prompt: "Select a category" %> 
    </div> 
</div> 
... 

Trình trợ giúp text_field hiển thị thẻ được định dạng đúng, hoàn chỉnh với thuộc tính lớp. Tuy nhiên, không có vấn đề làm thế nào tôi xây dựng được chọn hoặc collection_select giúp đỡ, tôi dường như không thể có được Rails để cho tôi một có chứa một thuộc tính lớp. Mã ở trên mang lại cho tôi điều này:

<select id="recipe_category" name="recipe[category]"><option value="">Select a category</option> 

... 

Vì vậy, lời nhắc đến, nhưng có vẻ như một phần của hàm băm html_options được nhận dạng. Nhưng kiểu dáng Bootstrap không được áp dụng. Không quan trọng nếu tôi sử dụng niềng răng {} quanh lớp: "kiểm soát biểu mẫu" hay không. Không quan trọng nếu tôi sử dụng parens xung quanh collection_select params hay không. Xảy ra với helper chọn là tốt.

Có ai có thể tư vấn cho bạn không? Bạn có thấy điều này không?

Trả lời

42

Thử sử dụng:

<%= f.collection_select :category, Category.all, :id, :name, {prompt: "Select a category"}, {class: "form-control"} %> 

Theo rails documentation, đầu tiên đến tùy chọn và sau đó lựa chọn html. Hãy nhớ rằng tùy chọn html cần phải ở trong braces: {prompt: "Select a category"} hoặc {class: "form-control"}.

+0

Yeah, tôi đã cố gắng thay đổi lên thứ tự, thêm niềng răng và loại bỏ chúng, vv Có dường như không thành vấn đề. Tôi đang xem nó trong Chrome v28.0.1500.95, nhưng cùng một vấn đề hiển thị trong IE10. Tôi có thể tạo một ứng dụng mới trong Rails 3.2 và xác nhận nó ở đó ... – user2670683

+2

Và bạn đã thử thêm dấu ngoặc ôm vào cả hai tùy chọn chưa? Giống như '<% = f.collection_select: category, Category.all,: id,: name, {prompt:" Chọn một category "}, {class:" form-control "}%>' –

+0

Điều đó đã làm được! Vì vậy, html_options = {} không phải là một băm duy nhất, nhưng mỗi tùy chọn là băm riêng của nó? Cảm ơn bạn rất nhiều vì đã hỗ trợ, Alter! – user2670683

9
<%= f.collection_select :category, Category.all, :id, :name, {prompt: "Select a category"}, {class: "form-control"} %> 

Câu trả lời đã chọn không hoạt động nhưng được kiểm tra vì câu trả lời chính xác được đưa vào nhận xét (do Alter Lagos cung cấp). Tôi đang cố gắng tránh nhầm lẫn bằng cách di chuyển câu trả lời thực tế ra khỏi các bình luận.

0

Hãy thử tính năng này, phù hợp với tôi!

<%= collection_select(:category, :category_id, @category_for_advertising, :id, :description, {}, {:class=>"dropdown-menu"}) %> 
0

Một phiên bản của những gì đã được trả lời, kết hợp W3CSS:

<%= family_form.collection_select :billing_status_id, 
    > BillingStatus.by_tenant(@cutid).order(:description), :id, 
    > :description, {}, {class: 'w3-select'} %> 
<%= family_form.label 
    > :billing_status, class: 'w3-label' %> 
Các vấn đề liên quan