将参数传递给erb视图

Fáb*_*rez 39 ruby erb sinatra

我正在尝试使用Ruby和Sinatra将参数传递给erb视图.

例如,我可以这样做:

get '/hello/:name' do
  "Hello #{params[:name]}!"
end
Run Code Online (Sandbox Code Playgroud)

我如何传递:name给视图?

get '/hello/:name' do
  erb :hello
end
Run Code Online (Sandbox Code Playgroud)

我如何读取view/hello.erb中的参数?

谢谢!

Pav*_*ler 75

只需将:locals传递给路由中的erb():

get '/hello/:name' do
    erb :hello, :locals => {:name => params[:name]}
end
Run Code Online (Sandbox Code Playgroud)

然后在views/hello.erb中使用它:

Hello <%= name %>
Run Code Online (Sandbox Code Playgroud)

(在sinatra上测试1.2.6)


Fáb*_*rez 17

不确定这是否是最佳方式,但它有效:

get '/hello/:name' do
  @name = params[:name]
  erb :hello
end
Run Code Online (Sandbox Code Playgroud)

然后,我可以访问:namehello.erb使用变量@name

  • 我无法让@name工作,但是@@ name work(sinatra(1.3.2)) (3认同)