我是Ruby的新手,请原谅我的无知。我真的不知道该怎么表达这个问题,所以这可能也是我在网上找不到答案的部分原因。
我正在与Rho Elements合作,我正试图将一些内容从一个页面传递到另一个页面。我取得了一些不错的进展,但遇到了一些我不理解的事情。我可以通过这样的身份证
<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"=>"{13111321443313.17}"}由eclipse显示,当我进入变量"id"时,会显示。
为什么我可以看到我想用来获取刚刚创建的订单详细信息的ID,但实际变量也是空的?
**编辑:这是我想传递的信息。
@params {"id"=>"131113212443313.17", "next"=>"asleftnext", "orderdetails"=>
{"AsFoundMeterRead"=>"", "AsFoundImage"=>""}}
"id" "131113212443313.17"
"next" "asleftnext"
"orderdetails" {"AsFoundMeterRead"=>"","AsFoundImage"=>""}
在控制器中使用params
,而不是@params
。访问密钥的规范形式也是params[:id]
。
就像前面的回答一样,您可以通过这种方式访问控制器中的参数
@id = params[:id]
此外,如果您使用的是Rails3或更高版本,您可能希望使用新的url。这种方式不那么冗长,因此更易于阅读。
newpage_controllername_url(:id => @id)
您也可以使用此方法询问路径。
如果你不知道你是否通过了参数,你可以使用显示内容
params.inspect
您可以使用inspect 查看任何对象的内容