Saya mengikuti tutorial Ruby on Rails dan menemukan masalah saat mencoba meneruskan variabel ke parsial.
_user
Parsial saya adalah sebagai berikut
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Saya ingin memasukkan angka untuk nilai ukuran. Saya mencoba sebagai berikut tanpa hasil.
<%= render @users, :locals => {:size => 30} %>
ruby-on-rails
dopplesoldner
sumber
sumber
locals
hash untuk menggunakan versi pendek seperti ini:<%= render @users, size: 30 %>
Dari api Rails di PartialRender :
Contoh:
Jadi, Anda bisa menggunakan pass variabel lokal
size
untuk merender sebagai berikut:dan kemudian gunakan secara
_user.html.erb
parsial:Perhatikan bahwa
size: size
itu setara dengan:size => size
.sumber
Antara
Atau
Untuk menggunakan
locals
, Anda membutuhkanpartial
. Tanpapartial
argumen, Anda dapat mencantumkan variabel secara langsung (tidak di dalamlocals
)sumber
Jangan gunakan
locals
di Rails 4.2+Di Rails 4.2 saya harus menghapus
locals
bagian tersebut dan hanya menggunakansize: 30
sebagai gantinya. Jika tidak, variabel lokal tidak akan diteruskan dengan benar.Misalnya, gunakan ini:
sumber
Jika Anda menggunakan JavaScript untuk merender, gunakan
escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
sumber
Secara sintaksis sedikit berbeda tetapi menurut saya terlihat lebih bersih:
sumber
Anda dapat membuat variabel lokal setelah Anda memanggil fungsi render secara parsial, oleh karena itu jika Anda ingin menyesuaikan sebagian, Anda dapat, misalnya, membuat parsial
_form.html.erb
dengan:Dengan cara ini Anda dapat mengakses sebagian ke label untuk tombol dan URL, keduanya berbeda jika Anda mencoba membuat atau memperbarui catatan. terakhir, untuk mengakses variabel lokal ini Anda harus memasukkan kode Anda
local_assigns[:button_label]
(local_assigns[:name_of_your_variable]
)sumber