2012-01-27 24 views
5

Tôi đang tìm kiếm để tạo ra một con đường được đặt tên từ một chuỗi và vượt qua một đối tượng vào nótên tuyến đường từ chuỗi với đối tượng

Tôi vẽ một phần với một "tài nguyên" địa phương

tức. render :partial => "listing", :locals => {:resource => @resource}

bên _listing.html.haml tôi đang sử dụng phương pháp self.send

self.send("#{resource.class.to_s.downcase}_path()") 

này làm việc tốt và tạo ra các nguồn lực được đặt tên đường tức. article_path()

nhưng tuyến đường này cần một đối tượng được truyền trong tuyến đường tức là. article_path (bài viết)

tôi đang cố gắng này

self.send("#{resource.class.to_s.downcase}_path("+resource+")") 

và nhận được lỗi không thể chuyển đổi Điều vào Chuỗi

bất cứ đề nghị?

+0

sau rất nhiều mày mò tôi tìm thấy câu trả lời rất đơn giản. việc sửa chữa là để làm cho nó dấu phẩy tách _listing.html.haml - resource_path = "# {} resource.class.to_s.downcase _path" = link_to resource.title, gửi (resource_path, tài nguyên) Hy vọng điều này sẽ giúp bất cứ ai đấu tranh với cùng một –

Trả lời

10

Bạn phải vượt qua các đối số như thế này:

self.send("#{resource.class.to_s.downcase}_path", resource) 
+0

@Ben tôi đã không nhìn thấy bình luận của bạn, vui mừng bạn đã tìm ra nó bằng cách của riêng bạn. – Jef

+0

chúng tôi đều đúng. cảm ơn cho các thông tin phản hồi jef –

+0

Tôi muốn sử dụng sau đây để thay thế: 'self.send (" # {resource.class.to_s.underscore} _path ", tài nguyên)' Nó sẽ làm việc trong trường hợp lớp của bạn là nhiều hơn một từ ví dụ 'FooBar -> foo_bar' – vansan

1

Bạn có thể đơn giản hóa câu trả lời Jef của (bạn không cần phải sử dụng một nguồn tài nguyên) như sau:

send("#{controller_name}_path") 
Các vấn đề liên quan