2016-01-13 87 views
0

如上所述。有沒有辦法將變量存儲在rails的視圖中供以後使用,而無需將其設置在該視圖的控制器函數中?有沒有辦法在Rails的視圖中存儲變量?

ex。

<% bagel = @bagels.active_bagel %> 
... 
<%= bagel.delicious? %> 
+1

你是問有關在視圖渲染兩次相同的百吉餅或你想百吉跨請求是否仍然存在? – NateSHolland

+0

@NateSHolland我想要將變量初始化並保存在每個請求中以便稍後在當前請求中使用,不需要持久化 – Riptyde4

+0

後來會發生什麼?更多意見?如果是這樣的話......也許你應該在你的控制器中獲取/存儲這個變量,以傳遞給你將要使用的各種視圖。 –

回答

1

如果你在相同的視圖模板(而不是在另一個模板),那麼確定 - 繼續前進並設置變量,就像你的例子。我們一直這樣做。

...但如果你去另一個模板使用這個變量...那麼它應該設置在調用範圍內,而不是一個魔術變量,在多個模板中使用,如果你明白我的意思: )

它可以做到這一點,但它不被認爲是好的做法。如果你可以在控制器中做到這一點,那麼你可能應該這樣做。

就你而言......我認爲你不應該在@bagels變量上多次調用active_bagel一個問題。

如果你正在嘗試這樣做,因爲你認爲它有可能會有一天緩慢....我建議等到它是實際上慢......然後找出如何優化速度然後。如果它是爲了其他目的......那麼告訴我們這是什麼,我們會找出一個更好的方法。

+0

感謝您的信息,是嗎?通常是按照Antarr在他的回答中解釋的方式完成的? – Riptyde4

+0

不,沒有通常的方法,因爲通常我們不會通過模板來完成。 Antarr's是一種拙劣的方式(儘管它確實回答了你的問題) - 也不涉及在以後的ruby中使用它 - 你將在後面的模板中使用javascript將其拉出來,這意味着其他ruby將無法訪問它在其他模板中。 –

+0

爲了澄清,我不會在其他模板中使用此變量,只會使用當前模板的當前渲染。仍在尋找一種方法來做到這一點。 – Riptyde4

0

這可以實現這個

 #app/views/xyz/ 

     #1. make a hidden html input field 
      <input type ="hidden" id = "you_id" value = "<%= yourvariable %>" 

    #if u want to access that variable in every view write your code in app/helper/application_helper 

    #otherwise write in the specific helper something this kind of code 

      def yourvariable 
      #your code 
      return somthing which you want in view 
      end 

     and from that html tag access the value 
相關問題