2012-10-02 12 views
12

Cách nhanh nhất và thanh lịch nhất để đánh dấu giá trị tùy chọn hiện được chọn trong biểu mẫu trong HAML là gì?Biểu mẫu đường ray (chọn/tùy chọn) - cách đánh dấu tùy chọn đã chọn bằng HAML?

%form{:action => '', :method => 'get'} 
    %select{:name => 'param_name'} 
     %option{:value => 'A'} A data 
     %option{:value => 'B'} B data 

Một cách:

- if params[:param_name] == "A" 
    %option{:value => 'A', :selected => 'selected'} A data 
- else 
    %option{:value => 'A'} A data 

nhưng điều này là không thích hợp khi select hộp sẽ có nhiều lĩnh vực tùy chọn ...

Trả lời

16

Something như thế này sẽ làm việc (bằng cách sử dụng "cú pháp hashrocket" cũ với nhà điều hành =>)

%select 
    %option{:value => "a", :selected => params[:x] == "a"}= "a" 
    %option{:value => "b", :selected => params[:x] == "b"}= "b" 

Hoặc, trong phiên bản Ruby mới hơn phiên bản (1.9 trở lên):

%select 
    %option{value: "a", selected: params[:x] == "a"}= "a" 
    %option{value: "b", selected: params[:x] == "b"}= "b" 
+1

những gì hiện các lựa chọn: params [: x] làm gì? – jpganz18

+0

giá trị được chọn mặc định. giá trị cho lựa chọn có thể đúng hoặc sai (mà == đánh giá) – msanjay

13

Bạn nên mở ra sức mạnh của những người trợ giúp đường ray.

For select tag:

= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name]) 

Ngoài ra, thay vì nguyên %form sử dụng form_tag hoặc tốt hơn form_for khi nó có thể (hoặc simple_form tốt hơn hoặc formtastic)

+0

Câu trả lời này chắc chắn là thích hợp hơn để viết đánh dấu biểu mẫu thô trong các chế độ xem, nếu bạn có thể sử dụng trình trợ giúp biểu mẫu. –

+1

yêu câu trả lời sẽ đẹp hơn nếu nó có một ví dụ về gói nó trong một 'form_tag' hoặc' form_for', cú pháp HAML là khá khó chịu với thụt đầu dòng của nó –