Rails 视图在删除链接中传递了错误的参数

Posted

技术标签:

【中文标题】Rails 视图在删除链接中传递了错误的参数【英文标题】:Rails view passes wrong parameters in delete link 【发布时间】:2016-05-28 14:08:13 【问题描述】:

以下是我的服务器日志。

我正在传递 user_idid 以及视图中的删除链接。当它通过时,user_id 的值为15067id 的值为1010

当我检查 params put pry 方法时,id 的值被 user_id 替换,即 15067。

这是一个完整的工作流程:

路线

delete "users/delete_role_sub_field" => "users#delete_role_sub_field"

控制器:

def delete_role_sub_field
  // Some code for destroy
end

查看:

  <% @user.roles.each_with_index do |role, i| %>
    <tr>
      <td>
        <a class="delete remove-description-field" href="/users/delete_role_sub_field?user_id=<%= @user.id %>&id=<%= role.id %>" data-method="delete" method="delete" data-confirm="Are you sure you want to delete Role Field?">
          Delete
        </a>
      </td>
    </tr>
  <% end %>

如有任何帮助,我们将不胜感激!

提前致谢。

【问题讨论】:

【参考方案1】:

您可以发布您的link_to 功能吗?你在哪里传递你的参数,因为应用程序工作正常,如果你查看你的路线,你会看到它的第一个参数和第二个参数。

例子:

resources :magazines do
  resources :ads
end

这将生成这样的路线:

    /magazines/:magazine_id/ads/:id

Link_to 将是这样的:

link_to ads.title, magazines_ads_path(magazine.id, ads.id)

在表演中:

def action
  @ads = Magazine.find(params[:magazine_id)).ads.find(params[:id])
end

【讨论】:

这里是 => 删除 我使用简单的html来创建链接。 你应该尽可能地使用link_to函数,因为如果你改变了一些仍然可以工作的东西。告诉我你的行动路线。

以上是关于Rails 视图在删除链接中传递了错误的参数的主要内容,如果未能解决你的问题,请参考以下文章

Rails 测试尝试删除 sql 视图

将外键传递给 Rails 中的部分渲染

Rails 4 在视图或模板中传递变量

Rails - 电子邮件确认链接给出“未知操作”错误

ArgumentError:升级 Rails 6.1.3 时出现错误数量的参数错误

在 Rails 视图中显示错误的不同方法