Rails 3路由/渲染缺失模板

时间:2011-04-01 02:09:52

标签: ruby-on-rails ruby-on-rails-3 routing

所以我有一个简单的Rails表单,发送到控制器admin,动作checkLogin。如果凭据正确,请将用户重定向到名为main.html.erb的新视图。现在,在我的控制器中,我已经尝试了所有内容,render 'main';到redirect_to。但我不断收到以下错误:

ActionView::MissingTemplate (Missing template admin/activate with {
  :handlers=>[:rjs, :rhtml, :rxml, :builder, :erb],
  :formats=>[:js, :"application/ecmascript", :"application/x-ecmascript", :"*/*"],
  :locale=>[:en, :en]} in view paths "/home/xxx/xxx/xxx/rails/beta/app/views"

这是路由问题,还是什么?

2 个答案:

答案 0 :(得分:1)

尝试render :file => 'admin/main.html.erb'指定确切的文件。

问题是渲染调用正在查找与控制器操作的名称匹配的文件,而它找不到它。所以,指定确切的文件,你应该没问题。

仅供参考,如果您致电render 'main',它将尝试呈现与您的“主要”操作相关联的视图,如果您没有“主要”操作,这可能无效。

另外,请确保您的意思是渲染。如果您有主要操作,并且您希望在该操作中定义的内容发生,那么您需要redirect_to main_whatever_path

答案 1 :(得分:0)

您是否已将“checkLogin”添加到路线中。试试这个,在您的routes.rb

resources :admin do
  member do
    get 'checkLogin'
  end
end

**注意:根据您的情况,'checkLogin'可能会发布'checkLogin'。

并在控制器操作'checkLogin'中,渲染部分

render :partial => 'main'