2013-02-26 73 views
2

我是Ruby新手,請原諒我的無知。我真的不知道怎麼說這個問題,所以這也可能是我沒有在網上找到答案的原因之一。無法在RhoMobile上訪問Ruby參數

我正在使用Rho Elements,我試圖將一些內容從一個頁面傳遞到另一個頁面。我取得了一些進展,但遇到了一些我不明白的地方。我可以通過一個ID像這樣

<input type="hidden" name="id" value="<%= @orderdetails.object %>"/> 

然後我搶ID(僅適用於現在正在做的這個權利,以確保我得到的ID)

@id = @params['id'] 

然後重定向到另一個頁面

redirect url_for(:action => :newpage, :id => @id). 

這是我的問題開始的地方。當我調試我得到過去的重定向和輸入應用程序:NEWPAGE

def newpage 
    @orderdetails = OrderDetails.find(@params['id']) 
    if @orderdetails 
     render :action => :newpage, :back => url_for(:action => :index) 
    else 
     redirect :action => :index 
    end 
end 

一旦在這裏我檢查

@params['id] 

,這是顯示的內容。

@params {"id"=>"{131113212443313.17}"} 
"id" "" 

@params { 「ID」=> 「{131113212443313.17}」}是通過蝕所示,當我打入變量 「ID」 「」 被示出。

爲什麼我可以看到我想使用的ID來獲取剛剛創建的orderdetails,但實際變量是空的?

**編輯:這是我試圖通過的信息。

@params {"id"=>"131113212443313.17", "next"=>"asleftnext", "orderdetails"=> 
{"AsFoundMeterRead"=>"", "AsFoundImage"=>""}} 
"id" "131113212443313.17"  
"next" "asleftnext"  
"orderdetails" {"AsFoundMeterRead"=>"","AsFoundImage"=>""} 

回答

2

使用params控制器,不@params。訪問密鑰的規範形式也是params[:id]

+0

額外信息的內容:在'params'散列實際上是「ActiveSupport :: HashWithIndifferentAccess」的一個實例,它允許您使用符號或字符串鍵訪問散列。 – MrDanA 2013-02-26 20:16:00

+0

@harm謝謝,但我仍然是零。我將快速更新一些可能有用的附加信息。 – Chris 2013-02-26 20:22:42

0

像它在您訪問PARAMS控制器以這種方式

@id = params[:id] 

此外,如果你正在使用Rails 3或更高您可能需要使用新的URL的方式以前的答案說是更簡潔如此它更容易閱讀。

newpage_controllername_url(:id => @id) 

你也可以用這種方法請求路徑。

如果你不知道,如果你是路過右側的PARAMS可以顯示使用

params.inspect 

您可以用任何物體的內容檢查

+0

謝謝我使用eclipse來調試應用程序,我可以看到值確實通過:id => @id傳遞,但我無法從params中獲取它。 – Chris 2013-02-26 20:52:04

+0

我對你的流程有點困惑,但是你爲什麼不嘗試使用會話,如果你想將值從一個視圖傳遞到另一個視圖。如果你已經將'@ params'修改爲'params',那麼重定向流程中肯定會出錯。 我在我的應用程序'@ params.inspect'和它的空白處測試過。 您可以訪問會話只是調用方法並添加一個密鑰 'session [:id] = @ id' 但如果您沒有使用db會話存儲的配置,會話將保存在cookie,因此它將被限制爲cookie大小,並且您不應將敏感數據存儲在那裏 – ArtDlrt 2013-02-26 22:03:21

+0

我正在使用不支持會話的Rhodes框架。我認爲在開始瞭解正在發生的事情之前,我需要更多地瞭解框架/ ruby​​。感謝您的答案,但我認爲這將需要更多的挖掘我的一部分。 – Chris 2013-02-27 17:08:15