2014-11-25 47 views
0

我有一個簡單的Sinatra應用程序,我想在其中創建表單,以便用戶可以更改其編號。但是,我甚至沒有改變數字,因爲「params」不起作用。一切都很好。我可以看到URL中的參數,但是如果我打印「params」,除了「Echo」之外什麼也沒有。「params」在Ruby中不起作用(Sinatra框架)

class MyApp < Sinatra::Application 
    register Sinatra::ActiveRecordExtension 

    get '/changenumber' do 
    p params 
    p params[:mynumber] 
    p "Echo" 
    end 
end 

和一個表單:

<form action="/changenumber" method="GET"> 
    Phone: <input type="text" name="mynumber" value="<%= user.number %>"> 
    <input type="submit" value="Change Number"> 
</form> 
+2

對錶單使用GET方法可能是它不起作用的原因,您應該嘗試將其更改爲POST。 – 2014-11-25 03:40:45

回答

2

由於vu-minh-tan指出你應該使用POST而不是獲取。

我重建例子,它運作良好:在此基礎上

{"mynumber"=>"test"} 
"test" 
"echo" 
IP - - [TIME] "GET /changenumber?mynumber=test HTTP/1.1" 200 4 0.0005 

,我覺得你的問題是,你只是在鎖定您的瀏覽器的輸出。這只是代碼中的最後一行。您應該嘗試如下所示:

get '/changenumber' do 
    "Params: #{params} mynumber: #{params[:mynumber]}" 
end 
+0

我知道了,太謝謝了。我沒有意識到只有最後一行會輸出到瀏覽器。 – Martin 2014-11-25 19:00:22