J'ai un appel de méthode à mon avis comme celui-ciHTML dans Rails 3 échappé
<%= Navigation.with(params) do |menu|
if current_user && current_user.can_verify?
menu.item("Listings", manage_listings_path())
menu.item("Listing changes", needing_change_approval_manage_listings_path())
menu.item("Flagged Items", flagged_manage_listings_path())
menu.item("Transfers", manage_listing_transfers_path())
menu.item("Reviews", manage_listing_reviews_path())
end
if current_user && current_user.admin?
menu.item("Log", manage_verifications_path())
menu.item("Indexer Compensations", manage_compensations_path())
menu.item("Users", manage_users_path())
end
end%>
qui sépare la chaîne ci-dessous
"<li><a href="/manage/listings" class="active">Listings</a></li> <li><a href="/manage/listings/needing_change_approval">Listing changes</a></li> <li><a href="/manage/listings/flagged">Flagged Items</a></li> <li><a href="/manage/listing_transfers">Transfers</a></li> <li><a href="/manage/listing_reviews">Reviews</a></li> <li><a href="/manage/verifications">Log</a></li> <li><a href="/manage/compensations">Indexer Compensations</a></li> <li><a href="/manage/users">Users</a></li>"
Je viens d'obtenir cette chaîne dans ma page. Je voulais qu'ils soient des menus joliment stylisés par CSS. Je reçois juste le texte brut ci-dessus dans ma page. Comment puis-je convertir cette chaîne à traiter en HTML par le navigateur.
S'il vous plaît aider
Voici la classe de navigation
class NavigationMenu < ActionView::Base
def initialize(params)
@params = params
end
def item(title, path, options={})
@items ||= Array.new
unless (route = Rails.application.routes.recognize_path(path,:method => options[:method]|| :get))
raise "Unrecognised path #{path}, are you sure it's in routes.rb?"
end
@items << content_tag(:li, link_to(title,path, :class => (@params[:controller] == route[:controller] && @params[:action] == route[:action])? 'active' : nil))
end
def output
return '' if @items.blank?
content_tag(:ul, @items.join("\n"), :id => 'navigation')
end
end
class Navigation
def self.with(params, &block)
menu = NavigationMenu.new(params)
yield menu
menu.output
end
end
J'ai enfermé l'appel de méthode dans raw() ...la chaîne n'est toujours pas considérée comme html – Anand
Il est possible que la méthode 'Navigation.with' ne retourne pas vraiment de chaîne mais l'écrit directement dans la sortie. Dans ce cas, seul le développeur d'origine de 'Navigation' peut vous aider. –
Ou vous partez à l'aventure dans les internals 'Navigation'. Apportez une machette. – Matchu