/ / V koľajniciach 2, ktoré poskytujú blok pomocníka, sa metóda javí ako čiastočná? - rubín-on-rails, rubín, erb

V Rails 2, ktorý prináša blok v pomocníkovi, - rubín na koľajniciach, rubín, erb

Koľajnice 2.2.2

_competition.html.erb

<p>This is packed</p>
<% pack do %>
// some javascript
<% end %>

competition_helper.rb

def pack(&block)
yield + "PACKED"
end

Avšak „PACKED“ sa k môjmu reťazcu javascript nepripojí, je to akoby pack do nemá žiadny efekt. Zdá sa, že s kontextom blokov a vykresľovaním skutočného pohľadu odchádza nejaká zvláštnosť, pretože ak odstránim volanie na výťažok v pomocníkovi a vrátim pevne zakódovaný reťazec, nedostanem z balíka žiadny výstup.

odpovede:

2 pre odpoveď č. 1
def pack(&block)
concat(capture(&block) + "PACKED")
end

0 pre odpoveď č. 2

Netestoval som to, ale môžete vyskúšať:

yield << "PACKED"

Je to len iný spôsob kombinácie 2 reťazcov.


0 pre odpoveď č. 3

Ako dočasné riešenie zatiaľ môžeme uviesť javascript do ďalšej časti a odovzdať ho pomocnej funkcii pomocou render_to_string, tj. bez nutnosti volania yield funguje.

<%= pack(render_to_string :partial => "_competition_javascript") %>