我是否需要为Ruby on Rails控制器调用生成控制器?

时间:2016-05-18 14:38:16

标签: ruby-on-rails ruby session

我正在将会话变量设置为用户的地理状态。我必须使用会话变量,因为我在页面加载时在特定于该用户的服务器上运行代码,我需要知道它们的位置。此代码设置为仅更新会话变量。

states_controller.rb

class StatesController < ApplicationController
  def loc
    session[:location] = params[:location]
  end
end

的routes.rb

post "states/loc" => "states#loc"

代码路由正确,会话变量更新。

但是,当进程完成时,我在views目录中的控制台“Missing Template”中收到500错误。我还没有看到任何教程告诉用户调用命令“rails generate controller”,我处于独特的情况,我无法调用此命令。

忽略这500错误有什么可能的副作用?

*我正在运行旧版本的ruby和rails。

1 个答案:

答案 0 :(得分:2)

  

忽略这500错误有什么可能的副作用?

每个请求都会导致您的rails服务器崩溃。这不好。因为这意味着在某些情况下它可能必须在每次失败的请求之后重新启动 - 这就像Homer Simpson这样的自助餐一样。

你的应用程序不应该引发导致500错误的未被捕获的异常 - 这只是体面的专业实践。

那么我该如何解决呢?

很简单,如果你不想要渲染视图的默认行为告诉rails做其他事情:

class StatesController < ApplicationController
  def loc
    session[:location] = params[:location]
    head :created
  end
end

这会使用201 - CREATED http标头发送空响应。

请参阅Rails Guides - Layouts and Rendering in Rails