Rails和Flash参数

时间:2010-12-16 15:38:45

标签: ruby-on-rails flash rest params

我正试图通过Flash向我的rails网站发布一个值。

我所获得的是http://localhost:3000/users/new的网址,我从Flash发帖。我作为POST方法发送的变量是score=xx。出于某种原因,我无法在新方法中获取我的rails控制器中的值:@newScore = params[:score]。如果我将方法更改为GET,我可以毫无问题地获得该值。那么我应该在POST方法上使用params哈希吗?

如果有人可以提出建议,我会非常感激。

1 个答案:

答案 0 :(得分:0)

您使用的是自定义路线吗?或者你只是做resources :users?更好地运行rake routes/users/new通常是一个GET,这是有道理的,因为你正在获取一个对象。 create操作是唯一的POST,并且映射到/users。将/users/new作为POST执行会破坏REST。

GET方法不允许使用POST数据。任何参数都将放在URL中的查询字符串中。这些参数仍会显示在params哈希值中。

修改

如果您确实尝试使用此REST调用创建用户,则需要POST到http://localhost:3000/users http://localhost:3000/users/new

修改

不幸的是,我不太了解flash如何发送POST请求,告诉你为什么你的params没有进入。但是,如果您正在尝试访问表单,那么您肯定需要获得http://localhost:3000/users/new的GET。你说你做GET时可以拿起变量,对吧?所以你不需要做POST。

如果您不希望用户能够编辑乐谱,则将值保存到控制器中的变量,并在渲染视图时,将该值放在不可编辑的元素中,如一个禁用的文本框,甚至可能只是一个标签。

修改

如果你能弄明白如何将你的Post数据从Flash转移到Rails,你需要对users_url进行POST,然后你可以修改你的create方法以发回已创建的用户的ID。然后,当您返回时,您可以再次打电话来编辑具有该ID的用户,并禁用分数字段。祝你好运。