Helfer in Rails 3 verwenden, um HTML auszugeben
Ich versuche mein Bestes, um einen Helfer zu erstellen, der ein <'ul> ausgibt, das aus allen Mitgliedern einer Sammlung besteht. Für jedes Mitglied der Sammlung möchte ich ein <'li> ausdrucken, das einen Titel und eine Reihe von Links zu CRUD, dem Mitglied, enthält. Dies ist ziemlich ähnlich zu dem, was Rails für das Gerüst für die Indexansicht ausgibt.
Hier ist der Helfer, den ich habe:
def display_all(collection_sym)
collection = collection_sym.to_s.capitalize.singularize.constantize.all
name = collection_sym.to_s.downcase
html = ''
html << "<ul class=\"#{name}-list\">"
for member in collection do
html << content_tag(:li, :id => member.title.gsub(' ', '-').downcase.strip) do
concat content_tag(:h1, member.title, :class => "#{name}-title")
concat link_to 'Edit', "/#{name}/#{member.id}/edit"
concat "\|"
concat link_to 'View', "/#{name}/#{member.id}"
concat "\|"
concat button_to 'Delete', "/#{name}/#{member.id}", :confirm => 'Are you sure? This cannot be undone.', :method => :delete
end
end
html << '</ul>'
return html
end
Und das gibt genau das aus, was ich will. Zuallererst, wenn jemand der Meinung ist, dass es einen besseren Weg gibt, zögern Sie nicht, mich zu korrigieren. Ich vermute, dass ich dies auf eine bassbewusste Art und Weise mache, aber im Moment ist es der einzige Weg, auf dem ich weiß, wie.
Ich habe dann versucht, die Links wie folgt in ein div zu packen:
def display_all(collection_sym)
collection = collection_sym.to_s.capitalize.singularize.constantize.all
name = collection_sym.to_s.downcase
html = ''
html << "<ul class=\"#{name}-list\">"
for member in collection do
html << content_tag(:li, :id => member.title.gsub(' ', '-').downcase.strip) do
concat content_tag(:h1, member.title, :class => "#{name}-title")
concat content_tag(:div, :class => "links-bar") do
concat link_to 'Edit', "/#{name}/#{member.id}/edit"
concat "\|"
concat link_to 'View', "/#{name}/#{member.id}"
concat "\|"
concat button_to 'Delete', "/#{name}/#{member.id}", :confirm => 'Are you sure? This cannot be undone.', :method => :delete
end
end
end
html << '</ul>'
return html
end
Jedoch bekomme ich jetzt kein Markup mehr in der Ausgabe der div.links-Leiste in die Ansicht. Ich bin mir sicher, dass dies etwas mit Block und Bindungen zu tun haben muss, aber ich kann für mein ganzes Leben herausfinden, was oder wie ich es reparieren soll. Kann mir jemand helfen?