繁体   English   中英

rails link_to 使用 get 而不是 post

[英]rails link_to using get instead of post

我正在为一个班级制作一个网站,我正在尝试使用一个名为“用户”的模型和一个名为“关系”的连接模型来实现一个好友请求功能。 我在 user#show 页面上有一个按钮,应该使用关系控制器中的 create 方法添加一个朋友。 这是按钮的代码:

<%= link_to "Add as Friend", relationships_path(:friend_id => @user), method: :post %>

但是,当我按下链接时,它会尝试访问 index 方法。 在控制台中查看后,看起来链接正在发送 GET 请求,该请求路由到 index 方法,而不是路由到 create 方法的 POST 请求。 有人可以解释为什么会发生此错误以及我如何解决它?

编辑:根据要求,这是我的路线中的内容:

Rails.application.routes.draw do
  resources :interests
  get 'interests/create'

  get 'interests/destroy'

  get 'home/index'

  get 'sessions/create'

  get 'sessions/destroy'

  resources :users
  resources :relationships
  resources :subscriptions

  # The priority is based upon order of creation: first created -> highest priority.
  # See how all your routes lay out with "rake routes".

  # You can have the root of your site routed with "root"
  # root 'welcome#index'
  root 'home#index'
  get "/auth/:provider/callback" => "sessions#create"
  get "/signout" => "sessions#destroy", :as => :signout

使用link_to帮助器向 Rails 表明您希望在 HTML 中生成a标记。 在无元素关于HTML规范a标签可以用于生产POST请求。 但是,由于 Rails 了解允许使用链接发出POSTDELETE请求的实用程序,因此它在link_to帮助器中提供了这些选项。 但是,它的实现必须在底层使用 JavaScript 才能正常运行。

检查jquery-ujs 是否已安装,以及您的资产管道是否正常工作,以便以这种方式使用帮助程序。

您还可以评估使用form_forbutton是否更好,因为这会自动POST

我很确定你匹配了错误的路线。 运行 rake 路由并查看链接到 Relationships#create 的路由。

在路由助手中使用“url”而不是“path”为我解决了这个问题。 因此,不要使用“relationships_path”,而是使用“relationships_url”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM