所以我有一个简单的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"
这是路由问题,还是什么?
答案 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'