Ho una pagina di presentazione per i miei utenti e ogni attributo dovrebbe essere visibile solo su quella pagina, se non è nullo e non è una stringa vuota. Sotto ho il mio controller ed è abbastanza fastidioso dover scrivere la stessa riga del codice @user.city != nil && @user.city != ""
per ogni variabile. Non ho molta familiarità con la creazione dei miei metodi, ma posso in qualche modo creare un collegamento per fare qualcosa del genere: @city = check_attr(@user.city)
? O c'è un modo migliore per abbreviare questa procedura?Controllare se non è nullo e non vuoto nel collegamento di Rails?
users_controller.rb
def show
@city = @user.city != nil && @user.city != ""
@state = @user.state != nil && @user.state != ""
@bio = @user.bio != nil && @user.bio != ""
@contact = @user.contact != nil && @user.contact != ""
@twitter = @user.twitter != nil && @user.twitter != ""
@mail = @user.mail != nil && @user.mail != ""
end
Nota, a partire da Ruby 2.3.0 puoi liberarti di molti assegni ridondanti e nulli usando l'operatore solitario, qualcosa come 'if @user && @ user.authenticated' può diventare semplicemente' if @ user & .authenticated' –