2010-10-01 39 views
8

Quan điểm:Rails 3 Mẫu Helpers: UTF8 và lĩnh vực tiềm ẩn khác

<%= form_for :blog_post do |f| %> 
    <ul> 
    <li> 
     <%= f.label :title %> 
     <%= f.text_field :title, :type => 'text', :id => 'title', :size => '', :limit => '255' %> 
    </li> 

    </ul> 
<% end %> 

<!DOCTYPE html> 
    <html> 
    <head> 
     <title>LevihackwithCom</title> 
     <script src="/javascripts/prototype.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/effects.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/dragdrop.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/controls.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/rails.js?1285902540" type="text/javascript"></script> 
     <script src="/javascripts/application.js?1285902540" type="text/javascript"></script> 
     <meta name="csrf-param" content="authenticity_token"/> 
     <meta name="csrf-token" content="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI="/> 
    </head> 

    <body> 

    <form accept-charset="UTF-8" action="/blog_post/new" method="post"> 
     <div style="margin:0;padding:0;display:inline"> 
     <input name="utf8" type="hidden" value="&#x2713;" /> 
     <input name="authenticity_token" type="hidden" value="UnhGSHHanJHfgJYhnksqJ1bfq3W+QEU2GJqLAMs2DmI=" /> 
     </div> 
     <ul> 
     <li> 
      <label for="blog_post_title">Title</label> 
      <input id="title" limit="255" name="blog_post[title]" size="" type="text" /> 
     </li> 
     </ul> 
    </form> 

    </body> 
    </html> 

Tôi đang rối tung xung quanh với những người giúp đỡ mẫu. Đoạn mã trên cho thấy tập tin xem của tôi cũng như HTML nó tạo ra. Điều gì là với div khủng khiếp đầy CSS nội tuyến nhồi với các lĩnh vực ẩn tôi đã không yêu cầu một cách rõ ràng? Cài đặt nào khiến các trường này được tạo? Có cách nào để tôi xóa CSS nội tuyến không?

Trả lời

18

Những trường này được tạo ra trong các hình thức đường ray cho vững mạnh:

utf8=✓

Các utf8 lĩnh vực ẩn đảm bảo rằng các giá trị hình thức được nộp như UTF8. Nó thực hiện điều này bằng cách đảm bảo rằng ít nhất một ký tự UTF8 trong biểu mẫu được gửi. Hầu hết các trình duyệt đều tôn trọng mã hóa của tài liệu và xử lý các giá trị của biểu mẫu giống nhau, nhưng có một trình duyệt có vấn đề. Do đó, utf8 nhận được dấu kiểm.

Authenticity_token ở đó để ngăn chặn giả mạo yêu cầu chéo trang web.

Trường ẩn tương tự được tạo cho hộp kiểm. Vì các hộp kiểm không được chọn không được gửi tới máy chủ, một trường ẩn đảm bảo rằng giá trị "0" (sai) được gửi: điều này hữu ích khi bạn có một loạt các hộp kiểm.

Các trường này được gói trong div với kiểu nội tuyến để đảm bảo rằng chúng không làm vỡ bố cục. Bạn có thể poke xung quanh trong mã nguồn trợ giúp hình thức và ghi đè lên điều này, nhưng tôi sẽ không khuyên bạn nên nó: nó xâm nhập tối thiểu, và nó có cho một lý do.

+2

Nhưng CSS nội tuyến là không đúng. Nó xấu xí và nó không tuân theo các tiêu chuẩn web. Có bất kỳ nhà phát triển nào khác đã cảm thấy thất vọng này với người trợ giúp biểu mẫu của Ruby và tìm thấy giải pháp không? –

+3

Vâng đó là một sự thỏa hiệp, nhưng việc sử dụng CSS nội tuyến một cách khôn ngoan không chống lại các tiêu chuẩn web. Bất kỳ cách nào khác sẽ làm cho nó phụ thuộc vào stylesheets của bạn: nó cần phải ẩn một cách chính xác độc lập của bất cứ điều gì khác trong dự án. –

+0

Gói div dường như bị xóa trong ~ 4.1 * Xóa gói div với kiểu nội tuyến cho các trường biểu mẫu ẩn. Chúng tôi đang xóa HTML 4.01 và XHTML tuân thủ nghiêm ngặt vì thẻ đầu vào trực tiếp bên trong biểu mẫu là hợp lệ HTML5 và việc không có kiểu nội tuyến giúp xác thực Chính sách bảo mật nội dung. * Https://github.com/rails/rails/blob/ed9b23d8986a2d4025913e7c56f353a579ab0189 /actionview/CHANGELOG.md –