2011-07-18 94 views
36

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

例如,我可以这样做:

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

我如何通过:name的看法?

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

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

谢谢!

回答

71

只要传递:当地人再培训局()在你的路线:

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

,然后只用它的意见/ hello.erb:

Hello <%= name %> 

(测试在sinatra 1.2.6)

+0

我的观点是最好的方法 – msa7

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

这是Sinatra还是Rails? –

14

不知道这是最好的方式,但它的工作:

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

然后,我可以在你好访问:name。 erb使用变量@name

+3

我无法让@name工作,但@@ name工作(sinatra(1.3.2)) – westonplatter

+0

@name应该可以工作。 https://github.com/sinatra/sinatra#accessing-variables-in-templates – chug2k