任何人都可以向我解释为什么我收到此错误? Rails是关于约定的。有没有更传统的方式来做我在下面尝试做的事情?
undefined local variable or method `hello_world' for #<#<Class:...>:...>
以下是我的文件:
welcome_controller.rb
class WelcomeController < ApplicationController
def hello_world
"Hello, World"
end
end
欢迎/ index.html.erb
<%= hello_world %>
的routes.rb
Rails.application.routes.draw do
get 'welcome/index'
root 'welcome#index'
end
答案 0 :(得分:6)
或者做:
class WelcomeController < ApplicationController
helper_method :hello_world
def hello_world
"Hello, World"
end
end
现在在视图中调用它:
<%= hello_world %>
将控制器方法声明为帮助程序,以使
hello_world
控制器方法可用于视图。
答案 1 :(得分:4)
您可以使用helper在ERB中写下该内容:
module WelcomeHelper
def hello_world
"Hello, World"
end
end
现在,您的ERB应该有效:
<%= hello_world %>
答案 2 :(得分:2)
hello_world
是在控制器和路由中定义的操作
您需要在操作中定义变量。可以在视图中访问此变量
class WelcomeController < ApplicationController
# this is action
def index
# this is variable
@hello_world = "Hello, World"
end
end
# view index.html.erb
# this calls variables defined in action
<%= @hello_world %>
<强> UPDATE1:强>
如果您定义到welcome#index
的路线,控制器中的操作名称应为index
!
答案 3 :(得分:0)
这是更多Rails惯例:
#config/routes.rb
root to: "welcome#index"
resources :welcome
#app/controllers/welcome_controller.rb
Class WelcomeController < ApplicationController
def index
#-> will render #app/views/welcome/index.html.erb
end
end
#app/views/welcome/index.html.erb
Hello World
<%= hello_world %> <!-- Use `@Arup`'s answer to create a helper method -->
答案 4 :(得分:0)
您可以使用print&#39; ff&#39;。它只是为我工作:)