gpt4 book ai didi

ruby-on-rails - 将自定义 put 方法添加到生成的 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:41 26 4
gpt4 key购买 nike

我通过常规生成器 scaffold_controller 生成了 records_controller。我想添加自定义方法,我们称它为 share 以便仅向其中传递一个包含电子邮件地址的参数。如果我的数据库中存在电子邮件,我想将 id 中的关联添加到 record

我将共享方法添加到 records_controller:

  def share
logger.info record_params
logger.info params
# check email in db and add id
respond_to do |format|
format.js
end
end

显示 View 中的表单:

<%= form_tag(controller: "records", action: "share", method: "put", remote: true) do %>
<%= label_tag(:user_email, "Share for:") %>
<%= text_field_tag(:user_email) %>
<%= submit_tag("Share") %>
<% end %>

并在路线中规则:

  put    '/records/:id/share', to: 'records#share'

表单呈现良好,但当我点击时出现错误:

ActionController::RoutingError (No route matches [POST] "/records/2/share"):

最佳答案

根据form_tag source code ,您传递给助手的参数都被视为 url_for_options 并返回如下错误输出:

<form action="/records/2/share?method=put&amp;remote=true" method="post">

您需要指定哪些参数是url_for_options,哪些只是options:

<%= form_tag({controller: "records", action: "share"}, method: 'put', remote: true) do %>

关于ruby-on-rails - 将自定义 put 方法添加到生成的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50592801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com