2011-06-30 28 views

Trả lời

1

Bạn có thể làm một cái gì đó như thế này trong một tập tin helper:

def custom_link_to(*args) 
    name   = args[0] 
    obj   = args[1] 
    if obj.is_a?(News) # or whatever class you are using 
    link_to(name, news_url(obj, :year => obj.date.year)) 
    else 
    link_to(args) 
    end 
end 

Sau đó, theo quan điểm của bạn:

<%= custom_link_to n.title, n %> 

Hoặc bạn có thể ghi đè lên các phương pháp link_to helper với một số mã tương tự. Tôi thích phương thức custom_link_to hơn vì nó cho thấy ít cơ hội thay đổi các cuộc gọi link_to khác. Nhưng nếu bạn làm đúng, bạn chắc chắn có thể thoát khỏi nó.

5

Bạn có thể ghi đè lên các helper mà tạo ra con đường

thêm một cái gì đó như thế này để các module NewsHelper nên làm các trick:

def news_path(news) 
    "/news/#{news.date.year}/#{news.id}" 
end 

sau đó <%= link_to n.title, n %> sẽ cung cấp cho bạn địa chỉ bạn muốn cho các đối tượng tin tức

+3

Cách tiếp cận hợp lệ của nó trong trường hợp đặc biệt này, nhưng nó không thể kiểm tra được và nó không mở rộng đến những nơi người trợ giúp URL được sử dụng bằng cách tiêm trực tiếp đường ray trợ giúp – bbozo

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