2011-07-18 27 views
36

Tôi đang cố gắng chuyển các tham số cho chế độ xem erb bằng Ruby và Sinatra.Truyền tham số sang chế độ xem erb

Ví dụ, tôi có thể làm:

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

Làm thế nào để vượt qua :name để xem?

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

Và làm cách nào để đọc các tham số bên trong chế độ xem/hello.erb?

Cảm ơn!

Trả lời

71

chỉ cần vượt qua: người dân địa phương đến ERB() trong tuyến đường của bạn:

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

và sau đó chỉ cần sử dụng nó trong các quan điểm/hello.erb:

Hello <%= name %> 

(thử nghiệm trên sinatra 1.2.6)

+0

Đối với quan điểm của tôi, đó là cách tiếp cận tốt nhất – msa7

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

Bạn không thể làm điều này trong các tuyến đường.

Bạn muốn đặt các thông số trong bộ điều khiển.

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

Đây có phải là Sinatra hay Rails không? –

14

Không chắc nếu đây là cách tốt nhất, nhưng nó làm việc:

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

Sau đó, tôi có thể truy cập vào :name trong hello. erb sử dụng biến @name

+3

tôi không thể nhận được @name để làm việc, nhưng @@ tên đã làm việc (sinatra (1.3.2)) – westonplatter

+0

@name nên hoạt động. https://github.com/sinatra/sinatra#accessing-variables-in-templates – chug2k

Các vấn đề liên quan