0

对 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&amp;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

每当我单击链接时,都会执行 user#index 方法。如何让 user#flag 方法执行?

4

3 回答 3

1

问题在于您如何定义路线。应该是这样的

resources :users do
  post 'flag'
  get 'flag', on: :member
end

检查导轨以了解更多信息。

于 2012-11-26T15:20:46.400 回答
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 %>

and everything works was expected. I was incorrectly using it like link_to_remote which requires the :url symbol. Thanks everyone for their input.

于 2012-11-27T02:33:33.743 回答
0

如果您运行 rake 路由,我想您会看到使用名称“flag_user_path”创建的路由需要“post”而不是“get”

于 2012-11-26T09:39:52.700 回答