AMcoder - javascript, python, java, html, php, sql

ռելսեր 3. ինչպես վերադարձնել html պիտակներով լցված զանգվածի չմշակված բովանդակությունը

Rails 3-ի թարմացումից ի վեր, ես բախվում եմ նոր խնդրի՝ տարբեր html թեգերով զանգվածից html ցուցադրելու հետ:

Մինչ այժմ ես կարող էի գրել մեթոդ_անուն, որը վերադարձնում է տարբեր html թեգերի զանգված: (նույնիսկ եթե դրանք արված լինեն լարերով...)

Այժմ զանգվածը ցուցադրվում է որպես զանգված.

["<br/></br/>", "<b><a href=\"/...">...</a></b>,"<br/></br/>"]

Ինչպե՞ս է դա հնարավոր ելքագրել որպես html թեգեր: Ես փորձեցի գործարկել to_html զանգվածի յուրաքանչյուր մուտքի վերջում, բայց սա տվեց mi-ի սխալը.

undefined method `to_html' for "<br/></br/>":ActiveSupport::SafeBuffer

Կա՞ն գաղափարներ, թե ինչպես դա շտկել:

Շնորհակալություն Մարկուս

Թարմացում. շնորհիվ nimblegorilla-ի պատասխանի՝ արդյունքն այժմ ունի հետևյալ տեսքը՝

["
", "...","
"]

Սա ավելի լավ բան է, քանի որ html-ը հեռացվում է, բայց տարրերը դեռ ցուցադրվում են որպես զանգված...


Պատասխանները:


1

Կարծում եմ, որ դուք փնտրում եք «հում» մեթոդը.

<% array = ["<br/>Hello World</br/>", "<b><a href=\"/...\">...</a></b>" , "<br/><b>Yo</b></br/>"] %>

<%= raw array %>

Սա վստահեցնում է, որ դուք մտադիր եք ցուցադրել html-ը որպես իրական html՝ ի տարբերություն օգտվողի անվստահելի մուտքի, որը կարող է լինել XSS-ի հնարավոր փորձ:

Այս railscast-ը մի փոքր ավելին է խոսում դրա մասին՝ http://railscasts.com/episodes/204-xss-protection-in-rails-3

10.12.2010
  • Շատ շնորհակալություն, դա ինձ օգնեց, որպեսզի html-ը ցուցադրվի որպես html, բայց ես դեռ խնդիր ունեմ, որ ամեն ինչ տպվում է զանգվածի տեսքով: 10.12.2010

  • 2

    Ձեր հետագա հարցին պատասխանելու համար, քանի որ դուք իսկապես զանգված եք թողարկում...

    <% array = ["<br/>Hello World</br/>", "<b><a href=\"/...\">...</a></b>" , "<br/><b>Yo</b></br/>"] %>
    

    դուք կարող եք անել.

    <%= raw(array.join) %>
    

    or:

    <%= array.join.html_safe %>
    

    Ցանկացած տողի վրա .html_safe կանչելը այն կվերածի SafeBuffer, որից Rails-ը չի խուսափում: Ուրեմն դա նույնն է, ինչ «հում» մեթոդ կոչել... բայց ես անձամբ ավելի շատ եմ սիրում .html_safe, հատկապես իմ օգնականների մեջ...

    Դուք կարող եք օրինակ.

    module ApplicationHelper
      # links will be converted to array, if multiple items are passed
      def ext_links(*links)
        links.map { |l|
          link_to("external link: <span>#{l}</span>".html_safe, l)
        }.join.html_safe
      end
    end
    

    Եվ այնուհետև օգտագործեք սա ձեր կարծիքով՝ առանց «հում» անվանելու անհրաժեշտության.

    <%= ext_links("http://google.com", "http://seznam.cz") %>
    

    Or

    <%= ext_links(["http://google.com", "http://seznam.cz"]) %>
    
    04.05.2011
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..