Je fais de mon mieux pour construire un assistant qui génère un < 'ul> composé de tous les membres d'une collection. Pour chaque membre de la collection je veux imprimer un < 'li> qui a un titre, et une div de liens vers le membre CRUD. C'est assez similaire à ce que Rails produit pour l'échafaudage pour la vue d'index.Utilisation d'aides dans les rails 3 pour la sortie html
Voici l'aide que j'ai:
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
Et cette sortie exactement ce que je veux. Tout d'abord, si quelqu'un pense qu'il y a une meilleure façon de faire cela, n'hésitez pas à me corriger, je suppose que je fais ça à la basse, mais pour le moment c'est la seule façon dont je sais comment.
Je puis tenté d'envelopper les liens dans un div comme suit:
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
Cependant, maintenant je ne reçoivent plus aucun des balises dans la sortie div.links-bar à la vue. Je suis sûr que cela doit avoir quelque chose à voir avec le bloc et les reliures, mais je peux, pour la vie de moi, comprendre ce qu'il faut faire ou comment y remédier. Quelqu'un peut-il offrir de l'aide?
Qu'est-ce que Votre première intention est-elle d'utiliser des aides? Pourquoi ne pas le faire dans le modèle à la place? –
Hmmmm, je suppose que je pourrais utiliser un modèle, je ne sais pas pourquoi je n'ai pas pensé à ça. – TheDelChop
partials est la voie à suivre sur ce que je pense ... kudos pour labourer à travers tout ce code ... eu mal à la tête juste de le lire ;-) – Ryan