2013-02-26 60 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