2013-05-02 21 views
5

Các release notes for Rails 3.0 bao gồm sự thay đổi này:Chính xác người trợ giúp chặn nội dung nào đã thay đổi hành vi trong Rails 3?

7.4.2 Helpers với khối

Helpers như form_for hoặc div_for chèn nội dung từ việc sử dụng khối <%= bây giờ:

<%= form_for @post do |f| %> 
    ... 
<% end %> 

riêng của bạn những người trợ giúp thuộc loại đó được mong đợi trả về một chuỗi, thay vì phụ thêm vào bộ đệm đầu ra bằng tay.

Những người trợ giúp làm điều gì đó khác, như cache hoặc content_for, không bị ảnh hưởng bởi thay đổi này, họ cần <% như trước đây.

Chúng tôi đang trong quá trình di chuyển ứng dụng web từ Rails 2.3.18 sang Rails 3.1.12 và sẽ rất hữu ích nếu có danh sách đầy đủ những người trợ giúp đã thay đổi để chúng tôi có thể kiểm tra tất cả các lần xuất hiện của chúng trong mã nguồn của chúng tôi, nhưng tôi đang gặp khó khăn khi tìm danh sách có thẩm quyền loại này.

Tôi đã thử xem qua lịch sử git của rails project, nhưng dường như có nhiều cam kết với các thay đổi có liên quan và chúng không được nhóm rõ ràng trên nhánh cụ thể. Ví dụ, nó có vẻ là rõ ràng rằng danh sách này bao gồm:

  • form_for
  • form_tag
  • fields_for
  • field_set_tag

... từ 7b622786f,

  • link_to

... ám chỉ trong e98474096 và:

  • div_for
  • content_tag_for

... ám chỉ trong e8d2f48cff

  • remote_form_for

.... ám chỉ trong 0982db91f, mặc dù nó được loại bỏ trong Rails 3.

Tuy nhiên, tôi chắc chắn đó không phải là hoàn chỉnh - bất cứ ai có thể cung cấp một danh sách đầy đủ?

+1

[Đơn giản hóa đường dẫn chặn người giúp đỡ bởi Yehuda Katz] (http://yehudakatz.com/2009/08/31/simplifying-rails-block-helpers-with-a-side-of-rubinius/) chứa một số thông tin về lý do đằng sau quyết định và chi tiết về việc triển khai cấp thấp. Nó có thể cung cấp một số manh mối về nơi để tìm câu trả lời, thật đáng buồn nó không chứa một danh sách đầy đủ mà những người giúp đỡ đã thay đổi. –

Trả lời

1

tôi không có danh sách đầy đủ, nhưng tôi nghĩ rằng bạn có thể lấy được hầu hết những gì đã thay đổi từ việc xem xét sự khác biệt trong tài liệu của UrlHelperFormHelper. hầu hết các phương pháp trong những người trợ giúp đã thay đổi thành cú pháp mới.

http://apidock.com/rails/v2.3.8/ActionView/Helpers/UrlHelper/link_to http://apidock.com/rails/v2.3.8/ActionView/Helpers/FormHelper/form_for

+0

Cảm ơn câu trả lời của bạn - nó hữu ích, nhưng nó không trả lời chính xác câu hỏi của tôi, như bạn thừa nhận, vì tôi đang tìm kiếm một danh sách đầy đủ và có thẩm quyền (hoặc ít nhất là được chứng minh một cách cẩn thận) từ một nơi nào đó, chứ không phải là dấu hiệu của "hầu hết những gì đã thay đổi". –

0

Có một danh sách các phương pháp này trong rails_upgrade plugin, mà mục đích là để kiểm tra ứng dụng của bạn cho các vấn đề về nâng cấp từ Rails 2 đến Rails 3. relevant method is check_old_helpers, mà kiểm tra cho những người giúp đỡ khối chứa bất kỳ:

  • content_tag
  • javascript_tag
  • form_for
  • form_tag
  • fields_for
  • field_set_tag

Đối với cách có thẩm quyền này là, plugin này là một plugin chính thức Rails dự án, mặc dù nó không bỏ lỡ một cặp vợ chồng mà tôi tìm thấy bằng cách tìm kiếm lịch sử git:

  • div_for
  • remote_form_for
  • link_to

Tuy nhiên, nếu công cụ chính thức để kiểm tra đối với những người giúp đỡ thiếu một số, có lẽ đây là tốt một danh sách như tôi khả năng tìm thấy. Điểm khác là công cụ kiểm tra nâng cấp nói rằng cần phải có cảnh báo không dùng nữa nếu bạn bỏ lỡ một số người, trong đó cung cấp một kiểm tra bổ sung:

Khối giúp việc sử dụng concat (ví dụ, form_for) nên sử dụng <% = thay vì < %. Biểu mẫu hiện tại sẽ tiếp tục hoạt động ngay bây giờ, nhưng bạn sẽ nhận được cảnh báo không dùng nữa kể từ biểu mẫu này sẽ biến mất trong tương lai.