2009-03-06 29 views
67

Tôi đang sử dụng Rails 2.2.2 và tôi muốn thêm id vào mã dạng html được tạo bởi form_tag.cách thêm id html vào đường ray form_tag

<% form_tag session_path do -%>  
<% end -%> 

Hiện nay sản xuất:

<form action="/session" method="post"> 
</form> 

có muốn nó để sản xuất:

<form id="login_form" action="/session" method="post"> 
</form> 

Các api là không thực sự bất kỳ sự giúp đỡ và tôi đã cố gắng bổ sung thêm kết hợp khác nhau của

:html => {:id => 'login_form'} 

không may mắn.

Trả lời

90

Đối <element>_tag bạn chỉ định HTML thuộc tính trực tiếp như sau:

<% form_tag session_path, :id => 'elm_id', :class => 'elm_class', 
          :style => 'elm_style' do -%> 
    ... 
<% end -%> 

Đó là <element>_remote_tag cấu trúc mà bạn cần phải di chuyển HTML thuộc tính bên trong một bản đồ :html:

<% form_tag form_remote_tag :url => session_path, :html => { 
          :id => 'elm_id', :class => 'elm_class', 
          :style => 'elm_style' } do -%> 
    ... 
<% end -%> 
+0

này cũng làm việc cho: đường dẫn form_tag,: name = 'myname' – Chris

+1

câu hỏi Có thể ngu ngốc nhưng điều này có thể được thực hiện cho form_for? – Codejoy

3
<% form_tag 'session_path', :id => 'asdf' do -%>  
<% end -%> 

Tạo

<form action="session_path" id="asdf" method="post"><div style="margin:0;padding:0"><input name="authenticity_token" type="hidden" value="ed5c62c836d9ba47bb6f74b60e70280924f49b06" /></div> 
    </form> 
26

Mã này

form_tag(:controller => "people", :action => "search", :method => "get", :class => "nifty_form") 

cho kết quả:

<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post"> 

Nhưng, nếu bạn sử dụng cấu trúc này

form_tag({:controller => "people", :action => "search"}, :method => "get", :class => "nifty_form") 

bạn sẽ nhận được kết quả

<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form"> 

và đó là chính xác những gì bạn muốn

+0

Bạn nghĩ sao? Ngoài ra - câu trả lời chỉ có mã không phải là tốt nhất - hãy thử giải thích câu trả lời một chút. –

+1

Đó là không có vấn đề gì. Và, vâng tôi nghĩ :) Nếu bạn muốn thêm lớp hoặc phương thức hoặc bất kỳ thứ gì khác để tạo thẻ, bạn chỉ cần gói bộ điều khiển và hành động như sau: {: controller => "people",: action => "search"}, sau đó tất cả các tham số của bạn sau cấu trúc này sẽ hoạt động, nếu chúng có liên quan –

+0

@KirillWarp làm việc tốt đẹp. – Bnjmn

Các vấn đề liên quan