非常新的ruby on rails并试图让我的第一个ajax调用工作。它正在进行ajax调用,但它总是调用#index操作,似乎忽略了URL参数。这是代码:
class UserController < ApplicationController
def flag
logger.debug "in flag user"
respond_to do |format|
format.js { render :layout=>false }
end
end
end
在我的routes.db中:
resources :users do
member do
post 'flag'
get 'flag'
end
end
然后在我看来,我创建了这样的链接:
<%= link_to "Flag User", :url => flag_user_path(user.id), :method => :get, :remote => true %>
HTML源代码为:
<a href="/users?method=get&url=%2Fusers%2F1%2Fflag" data-remote="true">Flag User</a>
rake路由产生了这个:
flag_user POST /users/:id/flag(.:format) users#flag
GET /users/:id/flag(.:format) users#flag
每当我点击链接时,总是会执行用户#index方法。如何让用户#flag方法执行?
答案 0 :(得分:1)
问题在于如何定义路线。它需要像这样,
resources :users do
post 'flag'
get 'flag', on: :member
end
检查导轨指南以获取更多信息。
答案 1 :(得分:1)
问题是:url符号。我改变了:
<%= link_to "Flag User", :url => flag_user_path(user.id), :method => :get, :remote => true %>
为:
<%= link_to "Flag User", flag_user_path(user.id), :method => :get, :remote => true %>
并且一切正常。我错误地使用它像link_to_remote,它需要:url符号。感谢大家的意见。
答案 2 :(得分:0)
如果你运行rake路线,我想你会看到用名称“flag_user_path”创建的路线需要“post”而不是“get”