带有嵌套资源轨的嵌套表单 4

2024-01-08

我正在尝试在 Rails 4.0.3 上创建一个带有嵌套资源的嵌套 form_for 但是我遇到了一些问题并且花了很多时间。

问题是当我尝试提交表单时,这些值没有保存在我的数据库中。它将直接重定向到labs#index

我已经定义了嵌套资源和labs_controller如下。

route.rb

...    
resources :users do
  resources :labs
end

实验室控制器.rb(一部分)

class LabsController < ApplicationController
  load_and_authorize_resource

  def new
    @user = User.find(params[:user_id])
    @lab  = Lab.new
  end

  def create
    @lab = Lab.new(lab_params)
    if @lab.save
      flash[:notice] = "Successfully created lab."
      redirect_to user_labs_url
    else
      render :action => 'index'
    end     
  end

  private

    def lab_params
      params.require(:lab).permit(:title, :description, 
        stages_attributes: [:id, :lab_id, :description, 
          tasks_attributes: [:id, :stage_id, :detail, :instruction, :answer ]])
    end
end

我有3个模型,Lab, Stage and Task每一个都通过has_many关系。我也用CanCan来处理授权。

lab.rb

class Lab < ActiveRecord::Base
  belongs_to :user
  has_many :stages
  resourcify

  validates :user_id, presence: true
  accepts_nested_attributes_for :stages
end

stage.rb

class Stage < ActiveRecord::Base
  belongs_to :lab
  has_many :tasks
  resourcify

  accepts_nested_attributes_for :tasks, allow_destroy: true
end

task.rb

class Task < ActiveRecord::Base
  belongs_to :stage
  resourcify

end

这是我的部分表单。

_form.html.erb

<%= form_for [@user, @lab] do |f| %>
  <div class="field">
    <%= f.label :title %>
    <%= f.text_field :title %>
    <%= f.label :description%>
    <%= f.text_area :description %>
  </div>

  <%= f.fields_for :stages do |builder| %>
    <%= render "labs/partials/stage_fields", f: builder %>
  <% end %>

  <div><%= f.submit "Submit", class: "btn btn-primary" %></div>
<% end %>

_stage_fields.html.erb

<fieldset>
  <%= f.label :description %>
  <%= f.text_area :description %>
</fieldset>

<%= f.fields_for :tasks do |builder| %>
  <%= render "labs/partials/task_fields", f:builder %>
<% end %>

_task_fields.html.erb

<fieldset>
  <%= f.label :detail %>
  <%= f.text_area :detail %>
  <%= f.label :instruction %>
  <%= f.text_area :instruction %>
  <%= f.label :answer %>
  <%= f.text_field :answer %>
</fieldset>

我已经解决了几个问题,但没有一个对我有用。例如。

  • 具有嵌套资源的 form_for https://stackoverflow.com/questions/2034700/form-for-with-nested-resources
  • 嵌套形式嵌套资源 https://stackoverflow.com/questions/6393464/form-for-nested-resource

我也尝试在嵌套模型表上遵循 Ryan Bates,但仍然没有成功。希望有人能帮助我。

提前致谢!


查看错误日志,可能是你的问题lab_params功能。当您查看传入的参数时,您希望将这些参数与您的允许选项相匹配。然后查看强参数 https://github.com/rails/strong_parameters有关如何处理嵌套参数的指导文档。

   def lab_params
      params.require(:lab).permit(:title, :description,
        :stage => [:id, :lab_id, :description,
          :tasks => [:id, :stage_id, :detail, :instruction, :answer ]
        ]
      )
    end

我认为这应该能让你超越这个错误。

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

带有嵌套资源轨的嵌套表单 4 的相关文章

随机推荐

  • Bootstrap 菜单在移动视图中默认不折叠

    我尝试使用 twitter bootstrap 3 0 实现自动折叠的垂直导航 基本功能有效 窗口大小小 顶部的菜单应该如此 但问题是 如果我使用 bootstrap 中的默认导航栏功能 它不会折叠 div class container
  • python图像识别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想做的是一个简单应用程序的图像识别 给定图像 500 x 500 pxs 1 种颜色背景 该图像将只有 1 个 50x50 像素的几何图
  • 如何使用 appium 来自动化 Android 上的浏览​​器?

    我想使用appium在android手机上自动化浏览器 但我不知道如何设置该功能 首先 我在 Android 设备的开发者选项中启用了 USB 调试 其次 adb 运行良好 我可以看到设备 ID 第三 我从Appium for window
  • 当鼠标一段时间没有移动时,用jQuery隐藏div元素?

    我有一个广播视频网站 带有一个菜单 当鼠标一段时间 假设 10 秒 不移动时 应该隐藏该菜单 同样 随着鼠标移动 它应该会重新出现 使用 css 和 jQuery 执行此操作的最佳方法是什么 先感谢您 看看mousemove http ap
  • 隐藏直方图

    所以我想绘制正态分布 我已经看到一种方法是使用以下代码 import numpy as np import matplotlib pyplot as plt mu 5 sigma 1 s np random normal mu sigma
  • 如何创建 C 工厂函数?

    我有一个带有函数指针的结构 如下所示 typedef int node transition func wint t typedef struct lex dfa arc t node transition func func int ex
  • C中的按位移位[重复]

    这个问题在这里已经有答案了 我得到了一些令我困惑的 C 代码 int a 1 int b 32 printf d n d n a lt
  • 在Python中强制函数参数类型?

    我在 Python 类中有一个函数 可以将接口添加到列表中 def RegisterAsListener self inListener self TransitListeners append inListener 这很好 因为一个类只需
  • 在类函数中定义类函数:Python

    我有一个代码 我想在类函数中定义一个类函数 这是我想做的一个简单的例子 该程序的目标是打印 4 gt gt gt class bluh def haha self print 3 def init self def haha self pr
  • Xrm.Page.data 为空

    我在机会实体上添加了一个自定义表单 并附加了一些 javascript 我使用 window open 和 url 中的 formId 来调用表单来打开表单 并且仅用于创建机会实体 在 javascript 中 我只是尝试填充一些字段 但
  • 使用 PHP 和 HTML 时的最佳实践是什么?

    我设计网站已经有一段时间了 但在使用 PHP 和 HTML 时 有一点我一直不太确定 整个文档用 PHP 编写是不是更好 echoHTML 像这样 或者有一个像这样的 HTML 文件 然后添加到 PHP 中 div Content div
  • 人们使用类加载做什么?

    因此 每本 Java 教科书都会谈论 Java 的灵活性 因为它可以在运行时加载类 只需拼凑一根绳子并将其交给Class forName 并抓住ClassNotFoundException并处理它 理论就讲这么多 您能否举例说明如何使用 J
  • 在鼠标悬停时动态添加和删除类 - Vue.js

    我可以使用 Vue 成功地在鼠标悬停时添加一个类 但我想在鼠标离开元素时删除该类 在 Vue 中处理这个问题的惯用方法是什么
  • MongoDB $或查询

    我在 mongo shell 中运行以下查询 db Profiles find or name gary name rob 它只是按预期返回任何内容 JSON Use in 对于问题中的查询 使用更合适 in http docs mongo
  • Websocket 跨页面 JavaScript

    我用 JS 实现了一个基本的 websockets 客户端 function connectToNotifServer var conn new WebSocket ws localhost 8080 conn onopen functio
  • 管道、dup2 和 exec()

    我必须编写一个可以运行管道的外壳 例如像这样的命令ls l wc l 我已经成功解析了用户给出的命令 如下所示 ls 第一个cmd l frsarg wc scmd l secarg 现在我必须使用两个叉子 因为命令是两个和一个管道 我编写
  • XML 中真正允许的字符

    由于在解析某些 据说是 XML 数据时出现一些解析器错误 我查看了XML标准 http www w3 org TR REC xml d 找出真正允许的内容 我目前的疑虑是关于标签内容中允许包含哪些内容
  • 添加更多代码后,Google Apps 脚本会随机生成错误消息“发生意外错误”

    我编写了一个 Google Apps Script UiApp 应用程序 其中包含近 1000 行代码以及相当数量的处理程序和回调 该应用程序运行良好 但随着代码的增长 应用程序突然收到很多 发生意外错误 消息 错误消息在应用程序加载时出现
  • 您如何根据风格选择元素?

    使用 jQuery 您如何找到具有特定样式的元素 例如 float left 无论它是内联样式还是 CSS 文件中定义的样式 使用过滤功能 http docs jquery com Traversing filter filter func
  • 带有嵌套资源轨的嵌套表单 4

    我正在尝试在 Rails 4 0 3 上创建一个带有嵌套资源的嵌套 form for 但是我遇到了一些问题并且花了很多时间 问题是当我尝试提交表单时 这些值没有保存在我的数据库中 它将直接重定向到labs index 我已经定义了嵌套资源和