Tôi có một danh sách các giá trị trong cặp url/tiêu đề mà tôi muốn hiển thị. (Cụ thể hơn, mỗi đối tượng có danh sách liên kết riêng của nó, một số có 0, một số có 1, một số có nhiều hơn.) Tôi muốn chúng xuất hiện trong danh sách được phân cách bằng dấu phẩy. Vì vậy, tôi viết điều này trong tập tin .erb tôi:Tôi có thể tạo một mảng liên kết bằng cách sử dụng link_to trong Rails không?
<%= links.map{|wl| link_to wl.title, wl.url}.join(', ') %>
Hơi ngạc nhiên của tôi, điều này hiển thị một danh sách bằng dấu phẩy của mã HTML cho các liên kết Tôi muốn tạo ra; nghĩa là, nó đã lấy tất cả các dấu ngoặc nhọn và mã hóa chúng. Chỉ để đảm bảo không có gì vui trong các hàm bậc cao hơn, tôi đã thử một phiên bản cấp bách hơn:
<% a = [] %>
<% links.each do |wl| %>
<% a << link_to(wl.title, wl.url) %>
<% end %>
<%= a.join(', ') %>
với kết quả tương tự. Nhưng tôi không nghĩ tôi đang lạm dụng link_to
, bởi vì nếu tôi sửa đổi điều đó thành
<% links.each do |wl| %>
<%= link_to(wl.title, wl.url) %>,
<% end %>
thì nó thực sự tạo liên kết. Đó là gần như chính xác những gì tôi muốn, ngoại trừ việc có thêm dấu phẩy sau dấu phẩy cuối cùng. Có một số ma thuật đang diễn ra dưới mui xe với link_to
mà làm cho nó hành động khác nhau tùy thuộc vào nơi đầu ra của nó là nhóm? Có cách nào để vượt qua ma thuật đó không? Các ngữ nghĩa join
sẽ chính xác những gì tôi muốn ở đây, và tôi có thể tìm ra cách cuộn của riêng mình (bằng cách sử dụng each_index, tôi đoán) nhưng nó có vẻ như một giải pháp cực kỳ nặng và không phải Ruby đối với những gì phải là một vấn đề phổ biến.
<% = links.map {| wl | link_to wl.title, wl.url} .join (',') .html_safe%>? – oldergod