Witam, mam taką instrukcję warunkową.
Używam też systemu logowania devise. Jak w devise się nazywa się controler? Lub jak zmienić tą instrukcję, żeby działała z devise.
Co dokładnie chcesz osiągnąć ?
W tym drugim przykładzie masz źle umieszczone else. Wydaje mi się, ze chcesz pewnie użyć tutaj elsif.
Do tego @page.title nie zawsze zadziała jeśli nie będziesz mieć obiektu @page.
Polecam Ci przenieść też całą tę logikę do jakiegoś helpera.
Ja jeszcze powiem, że używasz operatorów ‘and’/‘or’ niezgodnie z przeznaczeniem.
Nie można ich po prostu zamieniać z && oraz ||.
Nie tylko mają one inne priorytety ale też inne zastosowanie.
Czytałem o tym kiedyś ciekawy artykuł ale już nie mogę znaleźć. W każdym razie:
costam = 12 and cos_innego
Należy czytać nie jak "przypisz do costam wynik operacji ‘oraz’ na ‘12’ i ‘cos_innego’ " tylko
"Przypisz 12 do ‘costam’ i zrób ‘coś innego’ . "
Zwykle używa się tego w stylu
redirect_to :back and return
albo
is_enough_memory? or exit
Tylko to znalazłem:
Reasumując and/or są do sterowania programem a nie sprawdzania prawda/fałsz i wywodzą się z perla.
Ten artykuł którego nie mogę znaleźć dużo lepiej to tłumaczył ale mam nadzieję, że jakoś to wyjaśniłem.
A czemu nie ustawić tego w kontrolerze po prostu? Tzn. w kontrolerze ApplicationController ustawiasz domyślny tytuł w metodzie powiedzmy “set_title”,
a jeśli chcesz go zmienić, to nadpisujesz tę metodą dla konkretnego przypadku, np.
[code=ruby]class ApplicationController < ActionController::Base
before_filter :set_title
protected
def set_title @title = “Ekorozwój”
end
end
class PostsController < ApplicationController
protected
def set_title @title = “Aktualności”
end
end[/code]
Można też zastosować inny layout lub “content_for”, ale to rozwiązanie wydaje mi się najlepsze jeśli tytuł zależy wyłącznie od kontrolera (a nie konkretnej akcji).
Zgadzam się z Paneqiem: kontroler nie służy od ustawiania detali widoków. Ustawienie tytułu to zadanie samych widoków, patrz: https://github.com/bragi/site_meta
Mógłbyś bragi pokazać jakieś demo app z każdym ficzerem. W szczególności interesuje mnie sprawa breadcrumbs Swoją drogą czy ktoś może mi powiedzieć jaka warstwa powinna się zajmować okruszkami ? Dla mnie kontroler jest taką częścią aplikacji która wie skąd idziesz i dokąd zmierzasz i są pewne powody dla których mógłby się tym zająć a z drugiej strony nigdy mi to nie pasowało. Ale też w widoku odwoływanie się do różnych dość odległych miejsc danej aplikacji też mi się nigdy nie podobało.
Na takiej samej zasadzie jak w railsach rozwiązano obsługę “layoutu”, czy komunikatami typu “poprawnie zalogowano do systemu” - to przecież też należy do warstwy widoku, a jednak pojawia się w kontrolerze. Osobiście uważam, że MVC jak każdy wzorzec projektowy, pozwala uporać się z wieloma podstawowymi problemami, ale bardzo sztywne trzymanie się tych zasad (bo to nie jest MVC),
do mnie nie przemawia. Uzasadnienie powinno pokazywać, że takie rozwiązanie jest trudne w utrzymaniu, prowadzi do brzydkiego kodu lub jego duplikacji. Żadnej z tych rzeczy nie dostrzegam w tym rozwiązaniu. Jedyne co może budzić zastrzeżenia to zaśmiecanie przestrzeni nazw (@title jako “zmienna globalna”).