simple_form 中的嵌套属性返回批量赋值错误

2024-04-26

Models:

class Topic < ActiveRecord::Base
  has_many        :posts, :dependent => :destroy
  validates       :name, :presence => true,
                  :length => { :maximum => 32 }
  attr_accessible :name, :post_id
end

class Post < ActiveRecord::Base
  belongs_to :topic,    :touch => true
  has_many   :comments, :dependent => :destroy
  accepts_nested_attributes_for :topic
  attr_accessible :name, :title, :content, :topic, :topic_attributes
end

View:

<%= simple_form_for :post, :url => { :controller => :posts, :action => "create" } do |f| %>
  <h1>Create a Post</h1>
  <%= f.input :name, :label => false, :placeholder => "Name" %>
  <%= f.input :title, :label => false, :placeholder => "Title" %>
  <%= f.input :content, :label => false, :placeholder => "Content", :as => :text %>
  <%= f.simple_fields_for :topic do |topic_form| %>
    <%= topic_form.input :name, :label => false, :placeholder => "Topic" %>
  <% end %>
  <%= f.button :submit, "Post" %>  
<% end %>

控制器:

def create
  topic_name = params[:post].delete(:topic)
  @topic = Topic.find_or_create_by_name(topic_name)
  @post = Post.new(params[:post])
  @post.topic = @topic
  respond_to do |format|
    if @post.save
      format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
    else
      format.html { render :action => "new" }
    end
  end
end

当我填写并提交 /posts/new 表单时,终端显示:

Started POST "/posts" for 127.0.0.1 at 2011-05-06 18:30:10 -0700
  Processing by PostsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Gg2T18NRiYMe5UMReSfvwwiDTQSrjdnjiEdyDcP1MuI=", "post"=>{"name"=>"25", "title"=>"25", "content"=>"25", "topic"=>{"name"=>"25"}}, "commit"=>"Post"}
  Topic Load (0.2ms)  SELECT "topics".* FROM "topics" WHERE "topics"."name" = '25' LIMIT 1
  AREL (0.9ms)  INSERT INTO "topics" ("name", "created_at", "updated_at") VALUES ('25', '2011-05-07 01:30:10.237406', '2011-05-07 01:30:10.237406')
  Topic Load (0.7ms)  SELECT "topics".* FROM "topics" ORDER BY updated_at DESC
  AREL (0.8ms)  INSERT INTO "posts" ("name", "title", "content", "topic_id", "created_at", "updated_at") VALUES ('25', '25', '25', 25, '2011-05-07 01:30:10.406437', '2011-05-07 01:30:10.406437')
  AREL (0.3ms)  UPDATE "topics" SET "updated_at" = '2011-05-07 01:30:10.415141' WHERE "topics"."id" = 25
Redirected to http://0.0.0.0:3000/posts/25
Completed 302 Found in 281ms

我尝试添加:post_attributes to attr_accessible在主题模型中,但这并不能解决问题。可以是表格吗?


您不应该使用 simple_fields_for 来表示 :topic 吗?

simple_form_for @post do |f|
  f.simple_fields_for :topic do |topic_form|
    topic_form.input :name
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

simple_form 中的嵌套属性返回批量赋值错误 的相关文章

随机推荐

  • 如何在制表符中显示选择编辑器文本而不是值

    As the 编辑器选择 http tabulator info docs 4 1 edit edit values steve Steve Boberson bob Bob Jimmerson jim Jim Stevenson 我可以发
  • 覆盖 gem 的 lib 文件夹中的私有方法

    spree auth devise gem 中有一个私有方法 该方法位于控制器 UserSessionsController 内部https github com spree spree auth devise blob master li
  • Node 和 NPM 运行脚本和 Ctrl-C 触发 SIGINT 两次

    我在运行的一个 Nodejs 应用程序上遇到了问题npm start 这只是node app js 我的应用程序包含一个 sigint 处理程序 如下所示 process on SIGINT gt db disconnect then pr
  • 在Python中对字典键进行排序[重复]

    这个问题在这里已经有答案了 我有一个字典 其中每个键引用一个 int 值 根据值将键排序到列表中的最佳方法是什么 我喜欢这一个 sorted d key d get
  • 如何以编程方式将 ContextMenu 添加到系统托盘图标?

    我想以编程方式向托盘图标添加上下文菜单 这样当我右键单击托盘图标时 它应该显示菜单 我应该如何为托盘图标编写右键单击事件处理程序 我已经尝试过以下方法 private void Icon MouseRightClick object sen
  • Business Catalyst:检查我们是否位于 Liquid 的根 URL 上

    我想使用 Liquid 标记来测试正在查看的页面是否是主页 但特别是网站的根 URL 例如www mysite com 我尝试使用 globals get 因为根据BC 文档 http docs businesscatalyst com r
  • mongodb Nodejs Each 与 toArray

    我快速浏览了一下 没有找到任何令我满意的答案 但基本上我已经开始使用带有express和mongodb的node js来创建webapi 而不是通常的 Net MVC Web API路线 但我注意到的一件事是 为了返回结果集合 我正在以相当
  • 在 Django 中,当登录 URL 以 ?next=/accounts/logout/ 结尾时,停止重定向回注销

    在我的模板中 我目前正在使用next参数将用户重定向回登录页面之前的页面 a href Log in a The firstof标签确保万一request path无效 那么它将重定向回根 URL 这在除注销页面之外的每个页面上都适用 如果
  • 如何保证清理代码在 Windows C++ 中运行(SIGINT、错误分配和关闭窗口)

    我有一个 Windows C 控制台程序 如果我不调用ReleaseDriver 在我的程序结束时 某些硬件会进入错误状态 并且在不重新启动的情况下无法再次使用 我想确定一下ReleaseDriver 即使程序异常退出 例如如果我点击Ctr
  • 在 JDialog 中使用 JCalendar

    我的程序使用JDialogs 打开表格并采用我想要使用的表格JCalendar让用户选择一个日期 然后我将其用于其他方法 我已经下载了JCalendar图书馆 我读了一些示例代码 但仍然不知道该怎么做 我有一个想法 在表单中 您按下一个按钮
  • jQuery 动画分几步?

    我正在编写自己的动画函数是为了好玩 但我无法真正获得流畅的动画 jQuery 每个动画的步骤比例非常好 使其非常流畅 我想知道他们用来计算要采取多少步骤的通用公式是什么 这取决于动画的持续时间 jQuery 使用其默认设置存储在jQuery
  • 我正在尝试在Python中执行有向图的传递约简

    作为警告 我对 python 仍然有点缺乏经验 我正在尝试使用 networkx 库执行有向图的传递约简 我已经想出了一个算法 但在实现它时遇到了困难 经过快速搜索 我在其他堆栈交换问题中找到了与我类似的算法 但没有演示如何实际编码该算法
  • 在现代复杂游戏中实现成就系统

    如今创建的许多游戏都带有自己的成就系统 奖励玩家 用户完成某些任务 stackoverflow 上的徽章系统是完全相同的 但有一些问题我无法找到好的解决方案 成就系统必须始终留意某些事件 想想一款提供 20 到 30 个成就的游戏 例如 战
  • 如何使用实体框架在多层应用程序中正确管理 ObjectContext 生命周期?

    我见过很多在 MVC3 应用程序中使用实体框架的示例 它们都是非常简单的演示 只有一个包含 edmx 的 mvc3 Web 项目 因此 他们可以通过 using 语句使用打开和关闭连接的最佳实践 using var context new
  • Appium Inspector 无法在 iOS 元素层次结构中找到子元素

    应用程序构建于 反应本机0 62 2 测试使用的工具 Appium v 1 17 1 问题描述 Appium Inspector 不会检查 定位 iOS 层次结构中的子元素 我们使用 testID 和accessibilityLabel 属
  • Debug.Assert 似乎在 Mono 中不起作用

    考虑以下 C 程序 using System using System Diagnostics namespace Test class MainClass public static void Main string args Debug
  • React 延迟加载 JavaScript 文件

    我正在尝试使用 React lazy 来提高我的应用程序的性能 由于以太坊轻钱包是一个巨大的文件 我想将其放入一个单独的包中 当前正在运行的导入如下 import lightwallet from eth lightwallet dist
  • 调用 HTTP_POST 时出现 Bad Request 错误?

    我有一个关于 SAP 功能模块 http post 的问题 我只想将 SAP 中的一条短消息 msg 发布到我之前安装的推送通知服务器 pushd Github Projekt 现在我不知道如何传递消息 我用测试符号测试了 FM CALL
  • 电子表格的授权范围

    我创建了一个独立的 Google Apps 脚本 它不属于任何文档 该脚本会以固定的时间间隔自动触发 这个脚本 创建几个文件夹 如果它们不存在 创建一个 Google 电子表格 如果不存在 读过说 电子表格 更新日历事件 我注意到 当我第一
  • simple_form 中的嵌套属性返回批量赋值错误

    Models class Topic lt ActiveRecord Base has many posts dependent gt destroy validates name presence gt true length gt ma