2012-02-15 22 views
9

Tôi đang cố gắng để áp dụng một lớp mẫu được tạo ra bởi button_to trong Rails 3.Cú pháp button_to chính xác để thêm lớp vào biểu mẫu được tạo ra là gì?

Tùy chọn :class đặt lớp cho nút gửi nên docs cho chúng tôi biết để sử dụng :form_class để áp dụng một lớp mẫu.

Ví dụ:

<%= button_to 'x', user_contact_path(@user, contact), :method => :delete, :form_class => "delete" %> 

Điều này chỉ thêm thuộc tính form_class="delete" vào phần tử nút. Tôi đã thử kết hợp khác nhau bằng cách sử dụng :html_options và như vậy.

Mọi người đều biết cách thực hiện việc này?

Trả lời

15

Phương pháp đó hoạt động hoàn toàn tốt cho tôi. Tôi có thể làm:

<%= button_to "Hello", root_url, :method => :get, :form_class => "my_class" %> 

trên tạo ra như sau:

<form action="http://localhost:3000/" class="my_class" method="get"> 
    <div><input type="submit" value="Hello"></div> 
</form> 

Tuy nhiên, đây là trong Rails 3.1 như liên kết tại các điểm câu hỏi của bạn và cùng sẽ không làm việc trong Rails 3.0 .x từ số form class is hard coded.

Từ mã url_helper:

("<form method=\"#{form_method}\" action=\"#{html_escape(url)}\" 
    #{"data-remote=\"true\"" if remote} class=\"button_to\"><div>" + 
    method_tag + tag("input", html_options) + request_token_tag + 
    "</div></form>" 
).html_safe 
+1

Cảm ơn Syed, khá đúng - nó được mã hóa cứng như tôi đang sử dụng 3.0.7 Tôi nghĩ vậy. – digitalWestie

+2

Tôi thực sự không biết điều này trước ngày hôm nay. Cảm ơn câu trả lời! –

0

Hãy thử với

<%= button_to 'x', user_contact_path(@user, contact), {:method => :delete, :form_class => "delete"} %> 

Điều này buộc :form_class => "delete" là một phần của các hash options thay vì html_options băm.

+0

HMN, cú pháp này không làm việc cho tôi. Phải là một cái gì đó để làm với phiên bản của tôi của đường ray. – digitalWestie