2012-04-01 9 views
0

Ich folge dem Michael-Hartl-Buch und habe eine optionale Übung gemacht, die ich anscheinend nicht herausfinden kann.Schienen, undefined 'rohe' Methode

Ich habe einen Helfer genannt,

module MicropostsHelper 

    def wrap(content) 
    sanitize(raw(content.split.map{ |s| wrap_long_string(s) }.join(' '))) 
    end 
    private 
    def wrap_long_string(text, max_width = 30) 
     zero_width_space = "​" 
     regex = /.{1,#{max_width}}/ 
     (text.length < max_width) ? text : 
            text.scan(regex).join(zero_width_space) 
    end 
end 

, die ich versuche, Inhalte zu wickeln, die eine Zeichenfolge aus einer Benutzereingabe sein sollten. In meinem Controller habe ich,

def create 
    flash[:notice] = "[][] is...", params[:micropost][:content] 
    cleaned = wrap(params[:micropost][:content]) 
    @micropost = current_user.microposts.build(cleaned) 
    ... 

aber ich bekomme immer undefinierte Methode 'roh'. Könnte jemand erklären warum?

Gibt es eine API, die Beispiele für Methoden zeigt?

Antwort

4

Sie können string.html_safe oder r 'string' in den HTML-Ansichten verwenden

+3

roh ist ein Helfer, den Sie entweder in Ihr Modell aufnehmen müssen oder Verwenden Sie html_safe, wie Sairam vorschlägt. –

+0

danke Jungs! – Sasha

2

Sie einfach Wrap-Methode direkt in html.erb Datei verwendet werden könnte:

War

<span class="content"><%= micropost.content %></span> 

Ist jetzt:

<span class="content"><%= wrap(micropost.content) %></span> 
+0

Das nutzt nicht nur den Code, den Michael zur Verfügung stellt, sondern auch ein Problem, das ich hatte, als das OP versuchte; den Inhalt umhüllen, bevor das fortbestehen kann. Wenn Sie Inhalte rein auf der Grundlage von Styling und Aussehen ändern, bevor Sie den Speicher beibehalten, können Sie sich selbst in den Fuß schießen, wenn es um die Anzeige auf einer anderen Bildschirmgröße geht. – rynojvr

+0

Eines der schönen Dinge über Bootstrap ist seine Fähigkeit, das Layout der Website auf der Bildschirmgröße zu ändern, http://twitter.github.com/bootstrap/scaffolding.html#responsive, und während das oben für die Computer/Browser-Version der Website ist es in der Regel am besten, die Formatierung in der Ansicht anzuzeigen. Dadurch können Sie es basierend auf der Bildschirmgröße ändern, wenn Sie die Anwendung, die Sie erstellen möchten, erweitern möchten. – rynojvr

+0

Aus diesem Grund würde ich empfehlen, diese als die richtige Antwort zu wählen. – rynojvr