将参数传递给erb视图

时间:2011-07-18 18:58:02

标签: ruby sinatra erb

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

例如,我可以这样做:

get '/hello/:name' do
  "Hello #{params[:name]}!"
end

如何将:name传递给视图?

get '/hello/:name' do
  erb :hello
end

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

谢谢!

3 个答案:

答案 0 :(得分:75)

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

get '/hello/:name' do
    erb :hello, :locals => {:name => params[:name]}
end

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

Hello <%= name %>

(在sinatra 1.2.6上测试)

答案 1 :(得分:17)

不确定这是否是最好的方法,但它有效:

get '/hello/:name' do
  @name = params[:name]
  erb :hello
end

然后,我可以使用变量:name

访问 hello.erb 中的@name

答案 2 :(得分:-7)

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] %>