Ruby on Rails form_for chọn trường với lớp


200

Tôi đang đập đầu vào tường trên cái này. Tôi muốn tạo một thẻ chọn đơn giản bằng cách sử dụng f.selectthẻ nhưng không có gì tôi làm được. Tôi đưa ra một ví dụ dưới đây:

<%= f.select(:object_field, ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 4'], :class => 'my_style_class')%>

Ok, về cơ bản, đây là một danh sách đơn giản mà một khi biểu mẫu được gửi, nó đặt giá trị vào object_field. Đó là tất cả hoạt động, nhưng xem nguồn trang thẻ không bao gồm. Nó không ném một lỗi, nó chỉ bỏ qua tất cả cùng nhau.

Nếu bất cứ ai có bất kỳ đề nghị tôi sẽ đánh giá rất cao nó.

Câu trả lời:


449

Hãy thử cách này:

<%= f.select(:object_field, ['Item 1', ...], {}, { :class => 'my_style_class' }) %>

selecthelper có hai tùy chọn băm, một cho chọn và thứ hai cho các tùy chọn html. Vì vậy, tất cả những gì bạn cần là cung cấp các tùy chọn trống mặc định là param đầu tiên sau danh sách các mục và sau đó thêm lớp của bạn vào html_options.

http://api.rubyonrails.org/groupes/ActionView/Helpers/FormOptionsHelper.html#method-i-select


2
Ngay trên tiền, cảm ơn bạn rất nhiều, điều đó đã lừa Tôi biết rằng nó phải là một cái gì đó đơn giản và tất nhiên nó là.
Patrick

Tôi đã thử cách này trong haml nhưng không biết tại sao trong lớp "Inspect Element in fireorms with Element" không thấy ở đây là mã của tôi = f.select (: giới tính, [['Nam', đúng], ['Nữ ', false]], {}, {: class => "drop" ,: style => "opacity: 0;"})
Gagan Gami

@GaganGami Tôi đã làm cho nó hoạt động với mã này: = f.select(:stars, [['Male', true], ['Female', false]], {}, {:class=>"form-control",:style=>"opacity: 0;"}) độ mờ được đặt thành 0 sẽ khiến trường của bạn trở nên vô hình.
Robert

Có ai biết chúng ta nên làm gì nếu cuối cùng f.select được thông qua một khối không? Lớp học dường như không trải qua với bất kỳ sự kết hợp nào tôi đã thử.
Tashows

Cảm ơn bạn đã giải thích
Abhilash

21

Bạn cũng có thể thêm tùy chọn nhanh chóng như thế này.

<%= f.select(:object_field, ['Item 1', 'Item 2'], {include_blank: "Select something"}, { :class => 'my_style_class' }) %>

12

Công việc này đối với tôi

<%= f.select :status, [["Single", "single"], ["Married", "married"], ["Engaged", "engaged"], ["In a Relationship", "relationship"]], {}, {class: "form-control"} %>

2

Bạn có thể xem tại đây: http://apidock.com/rails/ActionView/Helpers/FormBuilder/select

Hoặc tại đây: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

Chọn thẻ có maximun 4 agrument, và agrument cuối cùng là tùy chọn html, có nghĩa là bạn có thể đặt tùy chọn lớp, yêu cầu, lựa chọn ở đây.

= f.select :sms_category_id, @sms_category_collect, {}, {class: 'form-control', required: true, selected: @set}

selected: @setlàm việc cho tôi khi tôi đặt nó vào đầu tiên {}.
dùng1515295
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.