这是一个我已经工作了一段时间的问题,现在我觉得我最终会偶然发现一个解释。我没有,现在它对我来说变得有点问题了。
我使用rails-generate-scaffold创建一个简单的(用户和帖子)应用程序。这是在安装jquery和jquery-ui之后完成的。我向用户控制器添加了“login”和“auth”操作。 Login.html.erb包含一些向用户发送.ajax请求的javascript#auth action将登录信息(电子邮件和密码)作为参数传递。
模板auth.js.erb存在。 “auth”操作响应format.js。该请求看起来很正常,但rails使用“show”操作而不是“auth”操作处理请求。
换句话说,usercontroller#show(作为JS)正在处理对用户控制器#auth(通过.ajax)的请求。
如果我删除了添加了scaffold的“resources:users”路由(然后调用了正确的操作),问题就消失了。但是没有这条路线,其他有用的脚手架东西就变得无法使用了(比如用户#new)。
来自Gemfile:gem'jquery-rails','> = 0.2.6'
安装jQuery:rails生成jquery:install --ui
来自../ layouts / application.html.erb
<head>
<title>Tab1</title>
<%= stylesheet_link_tag :all %>
<%= stylesheet_link_tag 'jquery-ui-1.8.16.custom.css' %>
<%= javascript_include_tag :defaults %>
<%= javascript_include_tag 'jquery.min.js' %>
<%= javascript_include_tag 'jquery.min.js', 'jquery-ui.min.js' %>
<%= csrf_meta_tag %>
</head>
这是./log/development.log以显示请求和响应。
Started GET "/users/auth/?email=steve&password=[FILTERED]&_=1326063255777" for 24.11.242.181 at 2012-01-08 17:53:45 -0500
Processing by UsersController#show as JS
Parameters: {"email"=>"steve", "password"=>"[FILTERED]", "_"=>"1326063255777", "id"=>"auth"}
^[[1m^[[36mUser Load (0.2ms)^[[0m ^[[1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 0 LIMIT 1^[[0m
Completed 404 Not Found in 6ms
ActiveRecord::RecordNotFound (Couldn't find User with ID=auth):
app/controllers/users_controller.rb:43:in `show'
建议请求 - &gt; GET“/ users / auth /?email ...正在由UsersController处理#show as JS
由于