ruby-on-rails - Ruby on Rails 教程 对 Params 哈希的工作原理感到困惑

标签 ruby-on-rails ruby parameters

所以我看到其他人对此感到困惑,我已经阅读了其他答案,但我仍然感到困惑。

在删除请求期间,信息是如何存储和解析到参数散列中的?我了解它在向其提交信息方面的工作原理。即当发出 Put、Post 或 Get 请求时,我知道信息是通过 params hash 传递给相应的 Controller 操作的。

但是,基于用户部分 (_user.html.erb) 中的以下代码:

<li>
    <%= gravatar_for user, size: 52 %>
    <%= link_to user.name, user %>

    <% if current_user.admin? && !current_user?(user) %>
    <%= link_to "delete", user, method: delete,
                            data: {confirm: "You sure?"} %>
                            <% end %>
</li>

以及自动路由到的 DESTROY 操作中的代码:

def destroy
  User.find(params[:id]).destroy
  flash[:success] = "User destroyed."
  redirect_to users_url
end

我不明白 params 散列如何获取存储在其中的用户 ID。如果它是 params[:user][:id] 我会理解,因为我们正在发布具有其属性列表的用户。但是,我不知道如何将 id 直接存储到 params 哈希中。这已经困扰我一段时间了,所以请提供任何见解。

最佳答案

这就是 Rails 的工作方式。如果您执行 rake routes,您将看到类似 DELETE/users/:id 的内容。

这意味着您作为参数传递的用户对象被解释为 :id。当 Rails 看到这个时,它会知道它必须查看传递的对象的 ID,按照惯例所有模型都有一个 ID 字段。

关于ruby-on-rails - Ruby on Rails 教程 对 Params 哈希的工作原理感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18001951/

相关文章:

ruby-on-rails - 使用 Active Record exists 有什么区别?与 find_by 相比?

ruby-on-rails - 设计登录错误不返回 JSON

ruby - 如何在文件文本中搜索模式并将其替换为给定值

ruby - Savon皂体问题

amazon-web-services - 如何在 Cloudformation Yaml 文件上获取最新版本的 SSM 参数

C# 扩展方法 - 有多远?

ruby-on-rails - 如何解决 `Object doesn' t support #inspect` 错误?

ruby - 如何有效地轮询大量服务器?

javascript - 使用 javascript 优雅地修改现有链接的参数

postgresql - 如何检查值是否在列表中或列表是否为空?