0

我有一个 Rails 应用程序,可让用户注册成为专业会员。如果他们想取消它,可以单击此链接,这会触发 promembers_controller.rb 上的销毁操作

<%= link_to "Cancel my account", promember_path(@user), :data => { :confirm => "Are you sure?" }, :method => :delete, :class => 'btn btn-mini' %>

我试图在两个不同的页面上使用这个链接,它只适用于其中一个,即用户的个人资料页面

  http://localhost:3000/lawyer_profiles/22-user-name

但是,我不希望该页面上的取消订阅链接。

如果我将链接放在嵌套 promembers_controller 的“显示”页面上,就像这样

   http://localhost:3000/lawyer_profiles/22-user-name/promembers/40

或者如果我把它放在这样的编辑页面上

http://localhost:3000/lawyer_profiles/22-user-name/promembers/37/edit

然后我得到这个路由错误:

No route matches [DELETE] "/promembers"

我不明白为什么只要我有一条路线,我放置该链接的位置就会有所不同,我确实这样做了

  resources :promembers do

     member { post :update_card }

  end 

我还有一个名为“销毁”的动作promembers_controller.rb

可能需要注意的是,除了上面显示的未嵌套的 :promembers 资源外,我的 routes.rb 文件还有像这样嵌套的 :promembers 。

  resources :lawyer_profiles do   
     resources :promembers
  end

(我不确定嵌套和非嵌套的相同资源是否会影响链接行为。)

您能解释一下为什么链接在嵌套页面中不起作用吗?

4

1 回答 1

1

您正在使用路径助手构建链接:promember_path(@user)并且@user正在为正在工作的页面的控制器操作中设置变量。

在不工作的页面上,您可能没有设置@user变量,因此路径助手被传递为零。

确实,您有 [delete] /promembers/:id 的路线,但您没有 [delete] /promembers 的路线,这是您将 nil 传递给助手时生成的路线。这会导致无路由错误。

于 2013-05-26T23:48:05.030 回答