簡體   English   中英

Ruby on Rails中的未定義方法

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

特別是這里的范圍...

http://guides.rubyonrails.org/active_record_querying.html

您不能在控制器中調用任意的“事物”。

控制器中公開的是其實例變量,例如@foo

如果您確實要調用使用puts的方法,請將其放在幫助程序中,例如, welcome_helper.rb (或任何約定)。

但是請注意,這不會像您認為的那樣起作用,即在網頁上放置“ Hello”。 您基本上是直接寫到控制台,甚至不是日志文件。

您到底想完成什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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