[英]Rendering partials in haml and passing variable to it
我試圖通過迭代變量然后將特定變量傳遞給部分來渲染我的部分,但它沒有看到這個變量。
我在這里渲染它
(dogs.html.haml)
- dogs.each do |dog|
.dog
= render 'dog', :locals => { :dog => dog }
然后我希望變量狗在我的部分可見
(_dog.html.haml)
.title
= dog.name
但它不可見
我究竟做錯了什么?
你將兩種不同的渲染部分的方式混合在一起。
使用此(遺留)表單...
render partial: 'dog', locals: {dog: dog}
或者這個更新的形式:
render 'dog', dog: dog
或者這個更好的新形式,您應該更喜歡:
= render dog
但不是你寫的版本。 你從第二種方式采取了render 'dog'
部分,而locals: { dog: dog }
從第一種方式開始。 這傳遞了一個名為locals
,它具有一個哈希值。
第三種方式是首選方式。 如果你有一個ActiveModel對象,你可以簡單地調用render <object>
,它會根據模型的名稱自動為你選擇合適的部分。
這也適用於ActiveRecord模型的集合。 你應該完全放棄你的@dogs.each
循環,只需要調用即可
= render @dogs
這將自動為集合中的每只狗調用= render dog
。 你只需要將你的.dog
移到_dog
部分內。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.