Ruby / Sinatra没有从模块文件传递变量

问题描述 投票:0回答:1

我正在尝试使用模块等在网页上打印名称,但似乎无法弄清楚如何从模块文件中传递变量。

main.rb

require 'sinatra' # includes gem to process web pages
set :bind, '0.0.0.0' # sets default url address to localhost

require_relative('modules')
include Display_name

get "/" do  
    Display_name.disname()
    erb :home
end

modules.rb

module Display_name

    def disname()
        @myname = "Bob"
    end
end

views / home.erb

<h1> Hello <%= @myname %> </h1>

输出应该是你好鲍勃,但我刚得到你好。

ruby sinatra
1个回答
0
投票

包括模块时,其所有方法都可用于路由器实例。因此,只需在没有显式接收器(模块)的情况下调用disname,即可将其分派到路由器本身,并且应该可以工作:

# ...

get "/" do  
  disname
  erb :home
end
© www.soinside.com 2019 - 2024. All rights reserved.