Rails 3.1:accepts_nested_attributes_for 和 has_one 关联 - 不起作用?

2023-11-24

我试图在 has_one 关联模型上使用 Accepts_nested_attributes_for ,但绝对无处可去:-(

我有两个模型,一个用户和一个位置。一位用户有一个位置:

class User < ActiveRecord::Base
  # current location
  has_one :location, :dependent => :destroy
  accepts_nested_attributes_for :location
end

class Location < ActiveRecord::Base
  belongs_to :user
end

我可以使用以下方法保存对模型的更改User.find(1).location.current_location_text = "blah"从控制台,所以我知道关联设置正确。

我在编辑用户页面上有两个表单。一个更新主要用户属性(并且工作正常,如下所示),然后这个允许用户更新位置模型的属性,称为“current_location_text”:

<%= form_for(@user) do |f| %>  
    <%= fields_for(@user.location) do |location_fields| %>
        <%= location_fields.label :current_location_text, 'Current Location' %>
        <%= location_fields.text_field :current_location_text, :placeholder => 'Road, City or Postcode' %>
    <% end %>

    <%= f.submit "Update Current Location" %>
<% end %>

这是行不通的。我有点困惑,因为表单发送的参数看起来不正确。提交表单后,日志中会显示以下内容:

Started PUT "/users/1" for 127.0.0.1 at 2011-10-08 00:28:05 +0100
  Processing by UsersController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"YdTAsXwEvRgXIqri+jfx3dLlYG2XWQTuYkgLDsO/OJw=", "location"=>{"current_location_text"=>"E14 8JS"}, "commit"=>"Update Current Location", "id"=>"1"}
  User Load (10.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
  User Load (5.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = ? LIMIT 1  [["id", "1"]]
  SQL (4.4ms)  BEGIN
   (2.5ms)  COMMIT
Redirected to http://localhost:3000/users/1

我觉得这件事有两件事很奇怪:

  1. 有“COMMIT”消息,但前面没有更新字符串,也没有错误。例如,如果您尝试提交受保护的属性,此时您会收到“您无法批量分配...”错误消息。

  2. 我觉得参数不对。 “位置”位按照我的预期嵌套,但我也希望它嵌套在“用户”哈希中,如下所示:

     {"utf8"=>"✓", "authenticity_token"=>"YdTAsXwEvRgXIqri+jfx3dLlYG2XWQTuYkgLDsO/OJw=", "user"=>{"location"=>{"current_location_text"=>"E14 8JS"}, "commit"=>"Update Current Location", "id"=>"1"}}
    

我不认为我在这里完全愚蠢。我是否遗漏了一些非常明显的东西?我尝试在表单中添加额外的隐藏字段,即用户 ID,然后获取用户哈希,但与“位置”哈希处于同一级别,而不是像我期望的那样作为它的父级!

另外,如果有帮助,这是我在 UsersController 中的更新:

默认更新 @user = User.find(params[:id])

if @user.update_attributes(params[:user])
  redirect_to current_user, :notice => 'User was successfully updated.'
else
  render :action => "edit"
end

end

这是我的 paths.rb 中的内容(尽管我认为它不相关):

resources :users do
  resource :location
end

任何帮助表示赞赏。如果我不解决这个问题,笔记本电脑就会被扔出窗外...... 谢谢。


<%= fields_for(@user.location) do |location_fields| %>

这是你的问题。您实际上需要将 fields_for “嵌套”在表单中,如下所示:

<% f.fields_for(@user.location) do |location_fields| -%>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3.1:accepts_nested_attributes_for 和 has_one 关联 - 不起作用? 的相关文章

  • puma systemd 脚本无法启动 puma

    我已经从多个来源复制并粘贴了以下美洲狮系统启动脚本的片段 但它不起作用 系统是Debian 9 6 用户rails红宝石通过安装rvm 用户rails可以启动命令RAILS ENV production bundle exec puma C
  • 将 Rack::Deflater 插入机架中的哪个位置?

    我目前有以下内容 use Rack Rewrite use Rack Cache verbose gt true metastore gt memcached localhost 11211 rack cache meta entityst
  • Rails 3 SSL 路由从 https 重定向到 http

    这个问题与此相关SO 问答 rails 3 ssl deprecation https stackoverflow com questions 3634100 rails 3 ssl deprecation建议使用routes rb和类似的
  • 轨道上的下一个对象问题

    视频影像 表 id title votes count 视频影像 控制器 def show video Video find params id next video Video order votes count DESC where v
  • Ruby on Rails Webpacker 找不到 asset_pack_path 下的图像

    我在使用 Ruby on Rails Webpacker 在视图中包含图像时遇到问题 当我尝试使用 html img 标签和 asset pack path 在我的视图中插入图像时 出现错误 我的图像位于app javascript ima
  • 如何加载 UrlHelper 和 Rails 中的路线?

    我想包括路线和link toPORO 中的方法 在控制台中测试这个时 我遇到了这个 如果我在没有路由助手的情况下包含 UrlHelper 一切似乎都工作正常 ruby 1 9 3 rc1 001 gt Rails version gt 3
  • 使用设计宝石导轨注销用户

    在管理部分 我显示当前登录用户的列表 现在管理员可以选择一个或多个用户并销毁他们的会话 注销他们 我不知道从哪里开始 请帮助我 您可以使用sign out通过传入用户对象在控制器操作中的方法 Make sure only admins ca
  • 创建费用前验证 CVC 代码

    我正在尝试检查用户输入的 cvc 代码 我已经存储了条带 customer id 和条带 card id 我想在向用户收费之前验证 CVC 代码 以下是创建费用的代码 charge Stripe Charge create amount g
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • 通过 SSL 发布 UTF-8 时,HEROKU 上出现“EOFError:已到达文件结尾”

    我在 heroku 上遇到了奇怪的错误 为了重现它 我必须使用请求正文中的任何 UTF 8 字符制作大的 超过几 KB HTTPS POST 这是一个例子 require net https require uri Accutally I
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • 捆绑包安装无法离线工作

    我得到了这个问题 我想已经安装了捆绑器 因为我无法在 RoR 中创建应用程序时捆绑安装 也无法直接在项目中捆绑安装 如果您遇到任何问题并找到解决方案 请帮助我 enter code here run bundle install Fetch
  • 保护 REST 和 JSON

    我想利用 RESTful 架构构建提供 JSON 数据的 Web 服务 但我只想要我自己的客户端应用程序可以从我的网络服务请求 基本上 我的 Web 服务包含不供公众使用的敏感数据 但我想以这种方式构建它 以便我可以构建连接到我的 Web
  • 用于 S3 私有文件的 ActiveStorage

    到目前为止 我一直在使用 Paperclip 将一些文件上传到 S3 其中一些文件不是公开的 Paperclip 允许通过以下位将一些文件作为私有文件上传 has attached file image styles large 2000x
  • 我应该如何使用 alias_method_chain 作为构建方法?

    我正在使用 Ruby on Rails 3 2 13 我想正确使用alias method chain build option name声明 因为我收到一个奇怪的错误 那是 在我的控制器文件中我有 class Articles Comme
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • 在生产环境中使用 Rails 设置 sunspot solr

    我尝试了各种链接 但我似乎找不到关于创建与生产中的 Rails 一起运行的 solr 实例的好资源 我知道您必须为生产设置 solr 服务器 我已经尝试使用 tomcat 设置 solr 但我似乎无法将其链接到 Rails 应用程序 有什么
  • Rails content_for 和yield 之间有什么区别?

    例如 content for stuff vs yield stuff 我知道它们的实现略有不同 但是有任何真正的功能差异吗 是否有普遍接受的最佳实践 yield是您指定内容区域在布局中的位置的方式 你可能有这样的事情 div h1 Thi
  • Rails:Passenger Standalone 适合生产部署吗?

    问题标题几乎概括了这一点 我找不到任何好的资源来概述使用 Phusion Passenger Standalone 进行 Rails 应用程序部署的优点 缺点 它与运行 Passenger Nginx 或 Passenger Apache
  • 如何让 Sidekiq 在 Heroku 上运行?

    这是我第一次尝试让 Redis 在 Heroku 上运行 我添加了一个工作dyno 就在今天 所以还没有付款 添加了RedisToGo Nano附加组件 在我的本地机器上测试了后台作业 并将应用程序推送到heroku heroku ps g

随机推荐

  • EF 和存储库模式 - 最终在一个控制器中出现多个 DbContext - 有任何问题(性能、数据完整性)吗?

    我对 ASP NET MVC 3 的大部分了解来自于阅读 Adam Freeman 和 Steven Senderson 所著的 Pro ASP NET MVC 3 Framework 一书 对于我的测试应用程序 我尝试非常严格地遵循他们的
  • 几个 jar 中的 freemarker 模板

    如何配置 freemarker 来搜索多个 jar 中的模板 随着春天
  • 自定义 iPhone 振动强度

    这是一个相关的问题iOS 中有用于自定义振动的 API 吗 我能够创建自定义振动模式 但无法控制强度 这是从 Kevin Cao 的答案中复制的 该答案支持自定义振动模式 NSMutableDictionary dict NSMutable
  • C++ 预处理器条件参数

    请注意C 03 任何 C 11 解决方案都不适合我 但为了获取知识而发布它们 我知道预处理器可以执行以下操作 define FOO 4 if FOO 4 cout lt lt hi lt
  • 表示并解决给定图像的迷宫

    给定图像表示和解决迷宫的最佳方法是什么 给定一张 JPEG 图像 如上所示 读取它 将其解析为某种数据结构并解决迷宫的最佳方法是什么 我的第一直觉是逐像素读取图像并将其存储在布尔值列表 数组 中 True对于白色像素 以及False对于非白
  • 不断循环一个javascript数组并将结果显示到div?

    我的网站有一堆推荐 当前在一个页面上 我试图让一个 div 以 5 秒的间隔显示每个 1 如果数组达到最后一个值 它应该再次开始回到数组的开头 这是我到目前为止所拥有的 var testimonial new Array testimoni
  • ctc_loss 错误“未找到有效路径。”

    训练模型tf nn ctc loss每次运行训练操作时都会产生错误 tensorflow core util ctc ctc loss calculator cc 144 No valid path found 与之前有关此函数的问题不同
  • 我可以在没有本地副本的情况下在远程存储库上发出 git rev-parse 吗?

    我的本地 git 存储库位于加密卷内 我希望能够跑步git pull all仅当远程有新提交时 但是 我无法使用像这样的接收后钩子here因为我没有加密卷的密码 这意味着即使钩子被触发 我仍然不知道安装卷和提取新更改的密码 所以我正在寻找其
  • 精度损失 - int -> float 或 double

    我有一道考试题正在复习 题目为 4 分 在java中 我们可以将int分配给double或float 这会丢失信息吗 为什么 我这样说是因为整数通常具有固定的长度或大小 存储数据的精度是有限的 而以浮点存储信息可以是无限的 本质上我们会因此
  • 如何为 Symfony2 中的所有控制器添加一些路由前缀?

    我使用注释来定义控制器中的路由 并且我有 15 个控制器 全部由执行 path1 path2 有什么方法可以在所有这些控制器中通过以下方式访问它们 admin path1 and admin path2 我不想通过更改每个文件来输入它 我可
  • 与数据表进行数据绑定后,GridView Column.Count 始终为 0

    我正在尝试有条件地显示 隐藏 GridView 列 我正在创建一个动态 DataTable 然后将其绑定到 GridView 后来 在回发时 我正在检查条件并想要显示 隐藏 GridView 的几列 但 Column Count 始终为 0
  • 如何使用 PyQt5 在同一窗口中更改 UI?

    我刚刚开始使用 PyQt5 我一直在尝试完成一项看似非常简单的任务 但无法获得足够的信息 经过一番谷歌搜索后 我已经能够关闭一个窗口 并在加载另一个 UI 的情况下启动另一个窗口 但这不是我想要在这里做的 我想在同一个窗口中切换用户界面 我
  • 如何使用 Swing 创建可扩展面板?

    我想创建一个展开和折叠面板的列表 如下图所示 我还没有找到任何与此相关的 Swing 组件 所以我开始创建类似的东西 我尝试将按钮一个放在另一个下面 以填充可用宽度 但实际上不起作用 我只能看到最后添加的一个 JPanel panel ne
  • Xcode Instruments 8.3 显示设置按钮丢失

    在最新版本的 Instruments 8 3 中 显示设置按钮已被删除 并由文件 gt 记录设置对话框取代 使用分配工具时 我现在无法再激活自动快照 因为该选项已从右侧面板中消失 并且记录选项对话框仅显示分配工具的值 而不显示虚拟机跟踪器的
  • 如果数学移至内联函数,为什么 C++ 舍入行为(对于编译时常量)会发生变化?

    考虑以下函数 static inline float Eps const float x const float eps std numeric limits
  • 如何关闭 Eclipse 上的项目方面?

    我试图解决 Eclipse 中的问题 所以我单击了 Propreties gt Project Facets gt Click on the link 现在我有了新的看法Project Facets还有很多错误 我不知道如何返回上一步并取消
  • 核心数据,一对多子对象排序

    所以 假设我有一个父母孩子的商店 父母与孩子有一对多的关系 parent children 并且他们都有名字 现在 在初始获取父母时 我可以指定一个排序描述符以按名字顺序返回它们 但是如何按顺序请求孩子呢 如果我执行 parent chil
  • 如何让TextBox失去焦点?

    怎么做TextBox当用户触摸时失去焦点并隐藏屏幕键盘Enter虚拟钥匙 private void TheName KeyDown object sender KeyRoutedEventArgs e var tb sender as Te
  • Android:连接并打印到 Bixolon SPP-R200

    我想打印到Bixolon SPP R200据我所知 它是更容易使用 Android 设置的移动蓝牙打印机之一 但是我不知道如何开始 我想首先我必须通过蓝牙连接到打印机 我假设为此目的我求助于本机 Android 蓝牙 API 我可能需要某种
  • Rails 3.1:accepts_nested_attributes_for 和 has_one 关联 - 不起作用?

    我试图在 has one 关联模型上使用 Accepts nested attributes for 但绝对无处可去 我有两个模型 一个用户和一个位置 一位用户有一个位置 class User lt ActiveRecord Base cu