簡體   English   中英

在haml中渲染部分並將變量傳遞給它

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM