如何在控制器中不使用Rails动作参数
我正在Rails服务器中为Shipworks实现第三方API,而Shipworks客户端应用程序正在发布具有Shipworks特定语义的action
参数。
但是,Rails路由逻辑会将此参数覆盖为控制器方法的名称。
是否有一个自定义路由我可以编写以获取该操作参数的值而不将其覆盖为我的控制器方法的名称?
我今天陷入了这个陷阱,并在控制器方法中提供了这个解决方案。 这是Rails 4.1:
if request.method == "POST" action = request.request_parameters['action'] else action = request.query_parameters['action'] end
我想到了。 AbstractRequest中有一个raw_post
方法。
所以你可以这样做来解析原始的post params:
def raw_post_to_hash request.raw_post.split(/&/).inject({}) do |hash, setting| key, val = setting.split(/=/) hash[key.to_sym] = val hash end end
然后只需调用raw_post_to_hash [:action]来访问原始动作参数或任何其他参数。 可能有一种更简单的方法。
- rails中三种开发模式的区别
- 在另一个表中查找具有两个特定记录的记录
- 从facebook中获取用户个人资料大图片,并在设计2.0中使用omniauth
- 如何基于我的开发数据库生成灯具?
- Ruby On Rails,错误运行命令“rails generate controller”,输入/输出错误@ rb_sysopen,(Errno :: EIO)
- ActionController :: RoutingError(未初始化的常量AdminsController)
- rails中的多个搜索字段
- 使用facebook图表,fb_graph或Koala ruby gem比facebooker2好吗?
- 当文件发生变化时,如何使lib /中的代码自动重新加载?