[英]Undefined Method in ruby on rails
我是Ruby on Rails的新手,我只喜歡這么簡單的東西,但是我無法弄清楚。
我搭建了視頻模型,控制器和視圖,然后為主頁創建了“歡迎”控制器。
我在welcome view文件夾中手動創建了一個index.html.erb文件,然后將主頁路由到Welcome#index。 目前一切正常。
就是這樣,當我像這樣在welcome_controller中定義方法時
def foo
puts 'Hello'
end
我在這樣的welcome / index.html文件中稱呼它
<%= foo %>
我收到以下錯誤:#<#:0x39675d8>的未定義局部變量或方法'foo'
控制器動作不是視圖助手,您需要將foo
放在application_helper.rb
或welcome_helper.rb
以按welcome_helper.rb
使用它,並更改它以刪除puts
,如下所示:
def foo
'Hello'
end
這會將Hello
插入到您的視圖中(這正是我所期望的)
根據下面的評論,您可能應該在模型中使用scope
。
scope :highlighted -> { (where(highlight: true) }
...從控制器返回突出顯示的記錄...
@highlighted = Videos.highlighted
...然后在您的視圖中遍歷@highlighted ...
<% @highlighted.each do |video| %>
<%= ...do something with video here... %>
<% end %>
請在此處詳細了解所有這些信息:
http://guides.rubyonrails.org/index.html
特別是這里的范圍...
您不能在控制器中調用任意的“事物”。
控制器中公開的是其實例變量,例如@foo
。
如果您確實要調用使用puts
的方法,請將其放在幫助程序中,例如, welcome_helper.rb
(或任何約定)。
但是請注意,這不會像您認為的那樣起作用,即在網頁上放置“ Hello”。 您基本上是直接寫到控制台,甚至不是日志文件。
您到底想完成什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.