【发布时间】:2011-10-07 22:47:22
【问题描述】:
我正在尝试使用 Ruby 和 Sinatra 将参数传递给 erb 视图。
例如,我可以这样做:
get '/hello/:name' do
"Hello #{params[:name]}!"
end
如何将:name 传递给视图?
get '/hello/:name' do
erb :hello
end
以及如何读取 view/hello.erb 中的参数?
谢谢!
【问题讨论】:
我正在尝试使用 Ruby 和 Sinatra 将参数传递给 erb 视图。
例如,我可以这样做:
get '/hello/:name' do
"Hello #{params[:name]}!"
end
如何将:name 传递给视图?
get '/hello/:name' do
erb :hello
end
以及如何读取 view/hello.erb 中的参数?
谢谢!
【问题讨论】:
只需将 :locals 传递给路由中的 erb():
get '/hello/:name' do
erb :hello, :locals => {:name => params[:name]}
end
然后在views/hello.erb中使用它:
Hello <%= name %>
(在 sinatra 1.2.6 上测试)
【讨论】:
不确定这是否是最好的方法,但它确实有效:
get '/hello/:name' do
@name = params[:name]
erb :hello
end
然后,我可以使用变量@name
:name
【讨论】:
get '/hello/:name' do
"Hello #{params[:name]}!"
end
你不能在路线中这样做。
您想在控制器中设置参数。
app/controllers/some_controller.rb
def index
params[:name] = "Codeglot"
params[:name] = "iPhone"
params[:name] = "Mac Book"
end
app/views/index.html.erb
<%= params[:name] %>
<%= params[:phone] %>
<%= params[:computer] %>
【讨论】: