Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails 3.1: accepts_nested_attributes_for和has_one联合-不起作用吗?

Rails 3.1: accepts_nested_attributes_for和has_one联合-不起作用吗?
EN

Stack Overflow用户
提问于 2011-10-07 16:04:21
回答 2查看 7.4K关注 0票数 8

我正试图在一个accepts_nested_attributes_for关联模型上使用has_one,但却一无所获:-

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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":

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= 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 %>

这不管用。我有点困惑,因为表单发送的参数看起来不正确。当提交表单时,它在日志中显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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. 有“提交”消息,但没有前面的更新字符串,也没有错误。如果你试图提交一个受保护的属性,你会得到“你不能大规模分配.”错误信息,

  1. ,在我看来是错误的。"location“位与我预期的一样是嵌套的,但我也希望它是嵌套在”用户“哈希中的,如下所示:

{"utf8"=>"✓“、”utf8“8JS"}、”提交“=>”更新当前位置、“id”“=>”1“}}

我不认为我在这里是完全愚蠢的。我错过了什么很明显的东西吗?我尝试在表单中添加额外的隐藏字段(即用户id ),然后得到用户哈希,但与“位置”哈希的级别相同,而不是像我所期望的那样作为它的父级!

此外,如果有帮助,下面是我在UsersController中的更新:

def update @user = User.find(params:id)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if @user.update_attributes(params[:user])
  redirect_to current_user, :notice => 'User was successfully updated.'
else
  render :action => "edit"
end

结束

下面是我的routes.rb中的内容(尽管我不认为它与此相关):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
resources :users do
  resource :location
end

任何帮助都很感激。如果我不解决这个问题,笔记本电脑就会从窗户出去.谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 17:52:00

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= fields_for(@user.location) do |location_fields| %>

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<% f.fields_for(@user.location) do |location_fields| -%>
票数 11
EN

Stack Overflow用户

发布于 2011-10-07 17:47:56

试一试这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= f.fields_for :location do |location_fields| %>

与其将对象本身赋予它,不如告诉rails您希望加载它的关联。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7693929

复制
相关文章
Windows系统安全|Windows中获取用户密码
Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是 LAN Manager(LM)哈希和 NT LAN Manager(NTLM)哈希。所谓哈希(hash),就是使用一种加密函数对其进行加密。这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。
谢公子
2022/01/19
2.9K0
Windows系统安全|Windows中获取用户密码
如何在小程序中获取用户信息
在以前的文章中,我们介绍了小程序的登录鉴权功能,方便开发者去获取用户的appid和session_key以便确认用户的身份。但是,仅仅通过appid和session_key不能去获取用户的信息。那么,这篇文章中,我们将介绍如何在小程序中获取用户的昵称、头像、性别、城市等信息。
it大叔
2019/01/25
6.7K0
如何在小程序中获取用户信息
PHP 获取用户行为参考代码 [IP/OS/URL/Broswer]
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/80015381
泥豆芽儿 MT
2018/09/11
7670
PHP 获取用户行为参考代码 [IP/OS/URL/Broswer]
如何在 Linux 中查找文件所有者?
在 Linux 系统中,每个文件和目录都有一个所有者(owner)和一个所属组(group)。所有者通常是创建该文件或目录的用户,而所属组通常是文件或目录所属的组。在某些情况下,您可能需要查找特定文件或目录的所有者。以下是在 Linux 中查找文件所有者的几种方法:
网络技术联盟站
2023/04/24
4.3K0
如何在 Linux 中查找文件所有者?
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息。最后由我用java实现linux上exe文件的版本号读取功能。下面是详细代码:
业余草
2019/01/21
6K0
如何在windows下和linux下获取文件(如exe文件)的详细信息和属性
如何在Selenium自动化Chrome浏览器中模拟用户行为和交互?
Selenium是一个用于自动化Web应用程序测试的工具,它可以模拟真实的用户在浏览器中进行各种操作,如点击、输入、滚动等。Selenium支持多种浏览器,如Chrome、Firefox、Edge等,但是每种浏览器都需要相应的驱动程序才能与Selenium进行通信。本文将介绍如何在Selenium中使用Chrome浏览器,并且设置代理服务器来避免被目标网站识别。
jackcode
2023/07/26
8900
CSDN用户行为分析和用户行为数据爬取
爬虫随机从CSDN博客取得800条用户行为数据,包含用户名、原创博客数、评论数、浏览量,试着从博客数,评论数,浏览量三个方面分析csdn的博主们的形象。
逝兮诚
2019/10/30
1.6K0
如何在Windows中运行bash
当微软宣布,将在Windows10上面支持bash时,所有的Unix命令行用户都为之雀跃了。上周三,微软发布了一个测试版本,开始支持了这项功能。 为了运行bash,首先要进行几步操作。首先,需要获得Windows10的build 14316。 安装内测版本之后,用户需要切换到开发者模式,从设置>更新(Settings > Updates),安全>开发者(Security > For Developers)打开新的设置页面,选择“Windows Subsystem for Linux (Beta)”,重启
CSDN技术头条
2018/02/11
3.8K0
如何在Windows中运行bash
浅谈用户行为分析
关于用户行为分析,很多互联网公司都有相关的需求,虽然业务不同,但是关于用户行为分析的方法和技术实现都是基本相同的。在此分享一下自己的一些心得。
数据社
2020/05/25
4.1K1
用户行为分析(Python)
电商、互联网、金融这三驾马车是对数据分析应用最为广泛的行业,同时也占据了就业市场上绝大多数的数据分析岗位,只因日常业务产生的海量数据蕴含着无尽的价值。 本次就通过电商角度,选取阿里天池项目中的淘宝App用户行为数据利用Python进行数据分析。
用户8949263
2022/04/08
4.7K0
用户行为分析(Python)
Flink在用户行为分析中的应用(一)
传统的企业营销大体是营销人员通过查询画像标签库去圈选人群,这种方案往往无法抓住那些"转瞬即逝的机会"
隐约喜欢萌萌哒
2022/09/03
1.2K0
Pulumi 如何在 Windows 环境中设置
没有安装文件, Pulumi 没有安装文件,所以你不能按照下载后安装的方式来进行配置。
HoneyMoose
2021/05/21
2K0
Pulumi 如何在 Windows 环境中设置
如何在Linux中搭建Windows环境
众所周知,搭建网站最好用是Linux系统,但是有一些Windows软件没法运行在Linux服务器上,就很痛苦
雾海梦曦
2022/11/14
1.5K0
如何在Linux中搭建Windows环境
多维用户行为模型
多维用户行为模型核心思想是在数据仓库的DWD和DWS层回答 "用户(User) 在什么时间(When),什么地点(Where), 通过何种方式(How), 对谁(Who,可能是feed,也可能是user), 做了什么(What或者Event)",一般是基于ODS层的用户维度表,用户行为日志明细表数据,在DWD加工而成,然后直接服务上层应用(建视图的方式)或者根据需求配合产品维度表在DWS汇总面向业务应用。常见的是用户行为分析的漏斗转化,桑吉图显示, 用户统计标签加工等。
平常心
2020/10/24
1.5K0
如何使用“行为模型”做用户行为养成
用户可能会习惯性的使用一款产品,或者在使用一款产品时会产生习惯性的行为。造成这种情况的原因可以有很多,比如不断的刷朋友圈生怕错过什么信息、比如刷抖音熬夜停不下来、比如每天都要开黑一局…
晓吾
2022/01/21
1.8K0
如何使用“行为模型”做用户行为养成
Flink用户画像用户画像行为特征
我们要使用的几个组件为Hadoop 2.6,HBase 1.0.0,MySQL 8,zookeeper 3.4.5,kafka 2.1.0,Flink 1.13,Canal 1.1.5。为了方便,这里都使用伪集群和单机安装。
算法之名
2021/11/10
8.8K0
如何在gin中获取响应体内容?
实现思路: 对gin的responseWriter进行包装, 每次写往请求方写响应数据的时候,将响应数据返回出去。step1: 定义一个新的CustomResponseWriter,通过组合方式持有一个gin.ResponseWriter和response body缓存。type CustomResponseWriter struct { gin.ResponseWriter body *bytes.Buffer}func (w CustomResponseWriter) Write(b []byt
Johns
2021/04/10
11.6K0
如何在gin中获取响应体内容?
如何在Bash中获取数组长度?
在Bash脚本中,数组是一种常用的数据结构,用于存储多个值。在处理数组时,经常需要知道数组的长度,即数组中元素的个数。本文将详细介绍如何在Bash中获取数组长度的方法,以帮助您更好地处理数组操作。
网络技术联盟站
2023/06/17
1.3K0
如何在Bash中获取数组长度?
点击加载更多

相似问题

如何在windows中获取所有者的用户in?

20

如何在windows中获取当前用户?

20

如何在Windows SAS中获取sas文件的所有者信息?

11

Windows中的C#获取文件所有者

11

如何在Windows7上获取gethostid行为?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文