2

我是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}"} 由 Eclipse 显示,当我进入变量 "id" "" 时显示。

为什么我可以看到我想用来获取刚刚创建的 orderdetails 的 ID,但实际变量也为空?

**编辑:这是我试图传递的信息。

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

2 回答 2

2

params在控制器中使用,而不是@params. 访问密钥的规范形式也是params[:id].

于 2013-02-26T20:07:46.593 回答
0

就像它在上一个答案中所说的那样,您可以通过这种方式访问​​控制器中的参数

@id = params[:id]

此外,如果您使用的是 Rails 3 或更高版本,您可能希望使用新的 url 方式不那么冗长,因此更易于阅读。

newpage_controllername_url(:id => @id)

您也可以使用此方法询问路径。

如果您不知道是否正确传递参数,您可以使用显示内容

params.inspect

您可以使用检查查看任何对象的内容

于 2013-02-26T20:22:44.080 回答