2012-08-03 8 views
15

Obecnie ma szyn check_box_tag połączenia, który wygląda jakszyny check_box_tag set sprawdzane wartości domyślnej

check_box_tag #{name} 

Chcę obejmują sprawdzenie atrybut, który wiem, że mogę zrobić z

check_box_tag name, value, checked 

Ale co jeśli chcę ustawić to sprawdzane bez jawnego określania value (po prostu chcę użyć domyślnego). Lub podobnie, gdybym chciał określić opcje html bez określania atrybutu checked. Czy jest jakiś sposób na zrobienie tego?

+0

I nie rozumiem, dlaczego nie chcesz ustawiać wartości. Czy możesz podać przypadek użycia? – Dougui

+0

Lub powiedzmy, że chcę ustawić atrybut HTML bez jawnego określania stanu zaznaczonego (po prostu chcę użyć domyślnego) - wydaje mi się, że jest to ten sam problem. –

Odpowiedz

3

Nie ma możliwości zrobienia tego bezpośrednio. Ale implementacja jest banalna, możesz ją zaszyfrować lub stworzyć własnego pomocnika.

Original realizacja:

def check_box_tag(name, value = "1", checked = false, options = {}) 
    html_options = { "type" => "checkbox", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys) 
    html_options["checked"] = "checked" if checked 
    tag :input, html_options 
    end 
7

Jeśli chcesz pole wyboru, aby być sprawdzone, a następnie

check_box_tag name, value, {:checked => "checked"} 

inaczej

check_box_tag name, value 
10

Chciałem zaktualizować ten. Trzeci parametr dla jest wartością boolowską reprezentującą sprawdzany status.

check_box_tag name, value, true 
1

Jeśli ktoś ma kolumnę typu boolean, to spójrz na to. sprawdzone? będzie domyślną wartością logiczną. To zadziałało dla mnie.

<%= hidden_field_tag :name, 'false' %> <%= check_box_tag :name, true, is_checked? %>

2

check_box_tag (nazwa = wartość "1", zaznaczone = fałszywe OPTIONS = {})

Przykłady:

check_box_tag 'receive_email', 'yes', true 
# => <input checked="checked" id="receive_email" name="receive_email" type="checkbox" value="yes" /> 

check_box_tag 'tos', 'yes', false, class: 'accept_tos' 
# => <input class="accept_tos" id="tos" name="tos" type="checkbox" value="yes" /> 

check_box_tag 'eula', 'accepted', false, disabled: true 
# => <input disabled="disabled" id="eula" name="eula" type="checkbox" value="accepted" /> 

api.rubyonrails.org