2011-07-18 89 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