2009-09-19 26 views
6

Sử dụng cùng một phần biểu mẫu trong cả tạo và chỉnh sửa trong trường hợp của tôi mới và xem trước. vẻ phần nào như thế này (tôi sử dụng HAML)= button_to không tạo biểu mẫu nếu đã ở dạng khác

=form_tag ({:action => params[:action]}, :multipart => true) 
    =text_field :newsletter, :title 
    =text_area :newsletter, :body 
    =file_field :newsletter,:attachment 
    -if params[:action] == "preview" 
    =button_to "select contacts and send", :action => "contacts" 
    =submit_tag "save and preview" 

nhưng trong html-ra là

... 
<input type="submit" value="select contacts and send"/> 
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> 
<input type="submit" value="save and preview" name="commit"/> 
... 

tại sao button_to không tạo ra các nút để tạo thành?

giải pháp là giữ nút bên ngoài một phần và chỉ 1 trên mỗi biểu mẫu, nhưng làm cách nào để có 2 nút trong cùng một biểu mẫu?

chỉnh sửa: workaround khác sẽ là một hộp kiểm ẩn được thiết lập bằng javascript nếu button_to được nhấn và nộp mẫu đơn, tách chúng trong bộ điều khiển

Trả lời

12

HTML không thực sự cho phép cho các hình thức để được lồng vào nhau. Một số trình duyệt làm, nhưng bạn sẽ thấy một số hành vi điên rồ ở những người khác. HTML là bạn đang hiển thị đầu ra thô hay DOM được tính toán từ firebug?

Cách ưu tiên để xử lý trường hợp này là di chuyển button_to của bạn bên ngoài biểu mẫu khác. Nếu bạn thích các tùy chọn chỉ có JS, bạn có thể sử dụng link_to :method => :post và tạo kiểu cho liên kết trông giống như một nút.

1

Cuối cùng sử dụng

:name => 'otheraction' 

trong bộ điều khiển sau đó kiểm tra nếu một trong hai

params[:commit] or params[:otheraction] 

là trong params băm

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