Hitsu
1
Chciałbym przekazać zmienną lokalną(zmienna nie ma odzwierciedlonego pola w modelu) do partiala.
<%= render :partial => 'info', :locals => {:info => first, :img_style => "original"} %>
:img_style będzie stylem dla obrazka.
Jednak to nie działa, dostaje błąd:
undefined local variable or method `img_style' for #<#<Class:0xb471f34>:0xb470cc4>
Chciałbym po prostu żeby w partialu nadawana była klasa dla obrazka w zależności od przekazanej zmiennej:
<%= image_tag(info.image.url, :class => img_style), info %>
Da się to jakoś zrobić, bez tworzenia nadmiarowych partiali?
Z góry dzięki za pomoc.
to powinno po prostu działać.
Hitsu
3
No właśnie powinno, a nie działa…
Hitsu
4
To nie działa:
[code=ruby]# infos/index.html.erb
<% first = @infos.shift %>
<% @aimg_style = "original"%>
<%= first %>
<%= render 'info', :locals => {:info => first, :img_style => @aimg_style } %>
[/code]
A to działa:
[code=ruby]# infos/index.html.erb
<% @infos.each do |e| %>
<%= render :partial => 'info', :locals => {:info => e, :img_style => "original"} %>
<% end %>[/code]
Ktokolwiek wie bądź potrafi wytłumaczyć dlaczegóż?
http://api.rubyonrails.org/classes/ActionView/Partials.html - w sumie mało czytania, a powinno rozjaśnić.
W skrócie następujące wywołanie:
<%= render :partial => 'info', :locals => {:info => e, :img_style => "original"} %>
Można skrócić do:
<%= render 'info', :info => first, :img_style => @aimg_style %>
I to ostatnie jest już bez locals, tu był błąd.
Hitsu
6
Krótka odpowiedź dlaczego pierwszy sposób działa, a drugi: