Nếu tôi có một phương pháp trong bộ điều khiển khác với bộ điều khiển tôi đang viết và tôi muốn gọi phương thức đó, có thể hay không, hoặc tôi nên xem xét việc chuyển phương thức đó sang người giúp đỡ?Gọi phương thức từ bộ điều khiển khác
Trả lời
Bạn về mặt kỹ thuật có thể tạo một thể hiện của bộ điều khiển khác và các phương thức gọi trên đó, nhưng nó tẻ nhạt, dễ bị lỗi và không được khuyến khích.
Nếu chức năng đó là phổ biến cho cả hai bộ điều khiển, bạn có lẽ nên có nó trong ApplicationController
hoặc bộ điều khiển siêu lớp khác của sáng tạo của bạn.
class ApplicationController < ActionController::Base
def common_to_all_controllers
# some code
end
end
class SuperController < ApplicationController
def common_to_some_controllers
# some other code
end
end
class MyController < SuperController
# has access to common_to_all_controllers and common_to_some_controllers
end
class MyOtherController < ApplicationController
# has access to common_to_all_controllers only
end
Tuy nhiên, cách khác để làm điều đó là jimworm được đề xuất, là sử dụng mô-đun cho chức năng chung.
# lib/common_stuff.rb
module CommonStuff
def common_thing
# code
end
end
# app/controllers/my_controller.rb
require 'common_stuff'
class MyController < ApplicationController
include CommonStuff
# has access to common_thing
end
Hoặc bao gồm từ một 'mô-đun'. – jimworm
'include GoodSuggestion' Thanks @jimworm – edgerunner
Tạo một thể hiện của bộ điều khiển khác ???? Arrrrrrrgggh (thực sự). Một lựa chọn khác, vì câu hỏi quá mơ hồ: di chuyển mã sang các mô hình. – nathanvda
Hãy thử và dần dần di chuyển bạn phương pháp để mô hình của bạn, nếu họ không áp dụng đối với một mô hình sau đó một helper và nếu nó vẫn cần phải được truy cập ở nơi khác đặt trong ApplicationController
Tôi sẽ không bao giờ di chuyển mã từ một bộ điều khiển để trợ giúp, thay vì một mô-đun sống trong '/ lib'. Chỉ xem mã nên sống trong một người trợ giúp. – nathanvda
đặt một cái gì đó trong một người trợ giúp chỉ ngắn ngủi. bạn sẽ nhận được điểm mà bạn không phải đặt trong một lib/ném tất cả mọi thứ vào một mô-đun không phải là quá tốt hoặc. –
Tôi thích sử dụng các mô-đun hơn người trợ giúp, vì chúng là OO thực, tôi có thể bao gồm/mở rộng chúng theo ý muốn. Tôi có thể nhóm các công cụ lại với nhau có ý nghĩa thực tế. Người trợ giúp chỉ là xô. Tôi khuyên bạn chỉ nên sử dụng chúng cho các phương pháp liên quan đến xem. Không chắc chắn ý bạn là gì với 'bạn sẽ đạt tới điểm .... '. – nathanvda
tôi không biết bất kỳ chi tiết nào về vấn đề của bạn, nhưng có thể đường dẫn có thể là giải pháp trong trường hợp của bạn (đặc biệt là nếu hành động RESTful của nó).
Nếu bạn yêu cầu đã làm với một số hoạt động DB, sau đó bạn có thể viết một hàm thông thường (phương pháp lớp) bên trong mẫu đó. Các hàm được định nghĩa bên trong mô hình có thể truy cập được trên tất cả các bộ điều khiển. Nhưng giải pháp này không áp dụng cho tất cả các trường hợp.
- 1. Spring MVC, gọi bộ điều khiển khác từ Bên trong bộ điều khiển
- 2. Gọi $ .get cho phương thức trong Bộ điều khiển
- 3. Cách gọi một phương thức điều khiển từ Javascript
- 4. Cách truy cập bộ điều khiển khác từ bên trong bộ điều khiển Symfony2
- 5. Phương thức trợ giúp gọi từ bộ điều khiển Rails 3
- 6. Kích hoạt phương thức từ Ô tĩnh trong Bảng điều khiển Bộ điều khiển
- 7. Symfony 2 Gọi hàm trong Phương thức điều khiển
- 8. Phương thức gọi từ một ViewController khác
- 9. gọi phương thức khi đóng bảng điều khiển
- 10. Góc - tuyến đường khác, cùng mẫu/bộ điều khiển, phương thức tải khác nhau
- 11. Ẩn tất cả các bộ điều khiển xem phương thức
- 12. Gọi phương thức điều khiển xem từ ứng dụng đại biểu
- 13. Bộ điều khiển lò xo 404 được retuned sau phương thức POST Đã gọi
- 14. Làm cách nào để gọi một phương thức điều khiển từ JQuery?
- 15. Gọi phương thức @Transactional từ một luồng khác (Runnable)
- 16. Có an toàn khi gọi phương thức được đồng bộ từ một phương thức được đồng bộ khác không?
- 17. Cách nhận phản hồi của bộ điều khiển từ bên trong bộ điều khiển khác?
- 18. Cách hiển thị partials từ một Bộ điều khiển khác
- 19. Bạn có thể gọi các phân đoạn khác từ các bộ điều khiển xem khác không?
- 20. Gọi chức năng khác trong cùng một bộ điều khiển?
- 21. Chức năng gọi trong bộ điều khiển khác trong Yii
- 22. Cách gọi một bài viết khác cho một bộ điều khiển khác trong Rails Functional Test
- 23. Có thể gọi Trình biên dịch Dao cạo Lập trình từ một phương thức Bộ điều khiển không?
- 24. Phương thức gọi bên trong phương thức khác trong javascript?
- 25. Phương thức gọi từ BackgroundWorker
- 26. Phương thức điều khiển cuộc gọi trong link_to từ chế độ xem
- 27. Extjs 4.1 Làm cách nào để gọi phương thức điều khiển từ trường biểu mẫu
- 28. Gọi phương thức trong trang gốc từ điều khiển người dùng
- 29. Trình bày một bộ điều khiển phương thức mà không biết bộ điều khiển xem hiện tại?
- 30. hiện quan điểm phương thức điều khiển
Bạn có thể thêm sự kiện vào sự cố bạn muốn giải quyết bằng cách gọi phương thức của bộ điều khiển khác không? Hiện tại nó khá mơ hồ, và giải pháp sẽ phụ thuộc vào vấn đề. – mliebelt
Thật vậy, hãy xây dựng những gì bạn đang cố gắng giải quyết. phương pháp chia sẻ đang làm gì? – nathanvda