Rails 4 – passaggio variabile a parziale

Sto seguendo il tutorial di Ruby on Rails e ho riscontrato un problema durante il tentativo di passare le variabili ai partial.

Il mio _user partial è il seguente

 
  • Vorrei passare un numero per il valore della dimensione. Sto cercando come segue senza fortuna.

      {:size => 30} %> 

    Grazie in anticipo!

    Hai bisogno della syntax parziale del rendering completo se stai passando dei locali

     <%= render @users, :locals => {:size => 30} %> 

    diventa

     <%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %> 

    O per usare la nuova syntax dell’hash

     <%= render partial: 'users', collection: @users, locals: {size: 30} %> 

    Quale penso sia molto più leggibile

    Dall’API Rails su PartialRender :

    Rendering del caso predefinito

    Se non utilizzerai nessuna delle opzioni come raccolte o layout, puoi anche utilizzare i valori predefiniti di rendering a mano breve per renderizzare i partial.

    Esempi:

     # Instead of <%= render partial: "account" %> <%= render "account" %> # Instead of <%= render partial: "account", locals: { account: @buyer } %> <%= render "account", account: @buyer %> # @account.to_partial_path returns 'accounts/account', so it can be used to replace: # <%= render partial: "accounts/account", locals: { account: @account} %> <%= render @account %> # @posts is an array of Post instances, so every post record returns 'posts/post' on `to_partial_path`, # that's why we can replace: # <%= render partial: "posts/post", collection: @posts %> <%= render @posts %> 

    Quindi, puoi usare passare una size variabile locale per renderizzare come segue:

     <%= render @users, size: 50 %> 

    e quindi usarlo nel partial _user.html.erb :

     
  • <%= gravatar_for user, size: size %> <%= link_to user.name, user %>
  • Nota che size: size è equivalente a :size => size .

    Se si utilizza JavaScript per il rendering, utilizzare escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");

    Sintatticamente un po ‘diverso ma a mio parere sembra più pulito:

     render 'my_partial', locals: { title: "My awesome title" } # not a big fan of the arrow key syntax render 'my_partial', :locals => { :title => "My awesome title" } 

    O

     render partial: 'user', locals: {size: 30} 

    O

     render 'user', size: 30 

    Per utilizzare la locals , è necessario partial . Senza l’argomento partial , puoi semplicemente elencare le variabili direttamente (non all’interno dei locals )