Hej,
Korzystam z HAML w projekcie.
mam takie coś:
[code=ruby].navbar-inner
.container
%table{:style => “width:100%”}
%tr
%td{:style => “width:200px”}
%a{:href => “/client”}= image_tag(‘logo.png’)
%td
- if session[:id_client]
- if Client.find(session[:id_client]).label != ‘’
%i{:style => “font-size:13px”}= Client.find(session[:id_client]).label
- end
- end
%td{:style => “text-align:right”}
- if session[:id_client]
= Client.find(session[:id_client]).fname
= Client.find(session[:id_client]).lname
( #{Client.find(session[:id_client]).email} )
#{link_to ‘wyloguj się’, client_destroy_path}
- else
%a.btn.btn-large{:href => “facebook/auth”} Zaloguj się
if flash[:success]
.container
.alert.alert-success.fade.in
%a.close{“data-dismiss” => “alert”, :href => “#”} ×
= flash[:success]
if flash[:error]
.container
.alert.alert-error.fade.in
%a.close{“data-dismiss” => “alert”, :href => “#”} ×
= flash[:error]
if flash[:notice]
.container
.alert.alert-notice.fade.in
%a.close{“data-dismiss” => “alert”, :href => “#”} ×
= flash[:notice]
.container
if session[:id_client]
%ul.nav.nav-tabs
%a{:href => "/client/"} Strona główna
%a{:href => "/client/list/promotion"} Moje promocje
%a{:href => "/client/list/fanpage"}
Moje fanpage
%a{:href => "/client/list/side"} Moje strony internetowe
%a{:href => "/client/choose/promotion"} Typy aplikacji[/code]
ale mam taki komunikat
[code]You don’t need to use “- end” in Haml. Un-indent to close a block:
if foo?
%strong Foo!
else
Not foo.
%p This line is un-indented, so it isn’t part of the “if” block[/code]
Wie może ktoś o co chodzi (rzuca się o pierwszego if’a i end ale nie mam pojęcia bez end jest też źle …
PS
to śmiga
.navbar-inner
.container
%table{:style => "width:100%"}
%tr
%td{:style => "width:200px"}
%a{:href => "/client"}= image_tag('logo.png')
%td
%i{:style => "font-size:13px"}= Client.find(session[:id_client]).label if session[:id_client] && Client.find(session[:id_client]).label
%td{:style => "text-align:right"}
ale czemu tamto nie działa… ?
sbl
February 20, 2013, 11:44pm
2
Hej,
usuń linijki “- end” - w HAML-u zamykanie warunków i pętli odbywa się automatycznie
tam gdzie masz znacznik “%i” - dodaj jeden poziom wcięć - wtedy się poprawnie zamknie if z linijki wyżej
P.S. Te znaczniki Li możesz zapisać jako:
%li{class: @tab == (“tab_client_choose_promotion”) ? “active” : “inactive”}
= link_to “blablabla”, blabla_path
Będzie prościej, łatwiej i działać poprawnie
dzięki, wszystko już gra ten HAML wymiata. kod tak ładnie wygląda nawet szybciej się pisze jeszcze muszę się w niem podszkolić .
sebcioz
February 21, 2013, 7:53am
4
Cały %ul.nav.nav-tabs masz skopkany (tylko pierwsze li jest w ul, reszta jest na ‘obok’):
%ul.nav.nav-tabs
<li
- if @tab == 'tab_client_home'
class="active"
>
%a{:href => "/client/"} Strona główna
<li
- if @tab == 'tab_client_list_promotion'
class="active"
>
%a{:href => "/client/list/promotion"} Moje promocje
Zamiast tego możesz pisać po prostu:
%ul.nav.nav-tabs
%li{:class => @tab == 'tab_client_home' ? 'active' : ''}
= link_to 'Strona glowna', '/client/'
%li{:class => @tab == 'tab_client_list_promotion' ? 'active' : ''}
= link_to 'Moje promocje', '/client/list/promotion'
To jeszcze jeden tip:
<% flash.each do |name, msg| %>
<div class="alert alert-<%= name == "error" ? "error" : "success" %>">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= msg %>
</div>
<% end %>
Tylko na Hamla sobie to przetłumacz
EDIT: widzę, że Ty jeszcze wyróżniasz notice, więc trzeba by użyć elsifa, ale to wciąż lepsze niż powtarzanie tego samego kodu dla error, success i notice.
konole
February 21, 2013, 8:13am
6
- if Client.find(session[:id_client]).label != ''
nie używaj zapytań w widokach. Przenieś to do kontrolera / helpera. Tym bardziej, że 3 (lub więcej!) razy wykonujesz to samo zapytanie w jednym widoku.
marr
February 21, 2013, 8:58am
7
Można prościej
<% %w{flash error notice}.each do |item| %>
<div class="alert alert-<%= item %>">
<button type="button" class="close" data-dismiss="alert">×</button>
<%= flash[item.to_sym] %>
</div>
<% end %>
@sebcioz zmieniłem też na
[code].container
if session[:id_client]
%ul.nav.nav-tabs
%li{class: @tab == (“tab_client_home”) ? “active” : “inactive”}= link_to “Strona główna”, client_path
%li{class: @tab == (“tab_client_list_promotion”) ? “active” : “inactive”}= link_to “Moje promocje”, client_list_promotion_path
%li{class: @tab == (“tab_client_list_fanpage”) ? “active” : “inactive”}= link_to “Moje fanpage”, client_list_fanpage_path
%li{class: @tab == (“tab_client_list_site”) ? “active” : “inactive”}= link_to “Moje strony internetowe”, client_list_side_path
%li{class: @tab == (“tab_client_choose_promotion”) ? “active” : “inactive”}= link_to “Typy aplikacji”, client_choose_promotion_path[/code]
Resztą powoli ląduje w helperach
sebcioz
February 21, 2013, 12:01pm
9
[quote=piotrstanek]@sebcioz zmieniłem też na
[code].container
if session[:id_client]
%ul.nav.nav-tabs
%li{class: @tab == (“tab_client_home”) ? “active” : “inactive”}= link_to “Strona główna”, client_path
%li{class: @tab == (“tab_client_list_promotion”) ? “active” : “inactive”}= link_to “Moje promocje”, client_list_promotion_path
%li{class: @tab == (“tab_client_list_fanpage”) ? “active” : “inactive”}= link_to “Moje fanpage”, client_list_fanpage_path
%li{class: @tab == (“tab_client_list_site”) ? “active” : “inactive”}= link_to “Moje strony internetowe”, client_list_side_path
%li{class: @tab == (“tab_client_choose_promotion”) ? “active” : “inactive”}= link_to “Typy aplikacji”, client_choose_promotion_path[/code]
Resztą powoli ląduje w helperach[/quote]
To jeszcze to możesz władować do helpera:
def active_class(tab)
if @tab == tab
"active"
else
"inactive"
end
end
[code].container
if session[:id_client]
%ul.nav.nav-tabs
%li{class: active_class(“tab_client_home”)}= link_to “Strona główna”, client_path
%li{class: active_class(“tab_client_list_promotion”)}= link_to “Moje promocje”, client_list_promotion_path[/code]
sarniak
February 21, 2013, 1:03pm
10
[quote=sebcioz]To jeszcze to możesz władować do helpera:
def active_class(tab)
if @tab == tab
"active"
else
"inactive"
end
end
[/quote]
A wręcz:
def active_class(tab)
@tab == tab ? 'active' : 'inactive'
end