没有问题,我肯定,但是我似乎找不到我的错误。症状集使用正确的user_id保存,但是嵌套的症状消失了。注意,用户模型结构与Rails教程中的相同(除了它有_many :symptom_sets)
模型:
class SymptomSet < ActiveRecord::Base
attr_accessible :symptoms, :symptoms_attributes
belongs_to :user
has_many :symptoms, :dependent => :destroy
accepts_nested_attributes_for :symptoms, allow_destroy: true
end
class Symptom < ActiveRecord::Base
attr_accessible :name, :duration, :symptom_set_id
belongs_to :symptom_set
end
控制器:
class SymptomSetsController < ApplicationController
before_filter :signed_in_user, only: [:create, :new]
def new
@symptom_set = SymptomSet.new
3.times do
symptom = @symptom_set.symptoms.build
end
end
def create
@symptom_set = current_user.symptom_sets.build(params[:symptom_sets])
if @symptom_set.save
flash[:success] = "Symptoms submitted!"
redirect_to root_url
else
render 'static_pages/home'
end
end
以及视图:
<%= simple_form_for @symptom_set, :html => { :class => 'form-inline' } do |f| %>
<%= f.fields_for :symptoms do |builder| %>
<%= render 'symptom_fields', f: builder %>
<% end %>
<div class="actions"><%= f.submit %></div>
<% end %>
还有部分:
<%= f.input :name,
:collection=> ["Cough", "Fever", "Headache", "Lethargy"],
label: "Symptom",
prompt: "Select a symptom",
:input_html => { :class => "span3" }%>
<%= f.input :duration,
:collection => 1..14,
label: "Duration",
prompt: "How many days?" %>
最后,rails服务器控制台输出以下内容:
参数:{“utf8”=
(0.1ms)开始SQL(0.4ms)插入“symptom_sets”(“created_at”、“updated_at“、“user_id”)值($1、$2、$3)返回“id”[[“createe_at”,2013年2月5日,星期二21:12:07 UTC 00:00],[“updatee_at“,星期二,2013年12月5日21:12:07UTC 00:00],[”user_id“,1]](1.1ms)提交
我会试着改变:
@symptom_set = current_user.symptom_sets.build(params[:symptom_sets])
收件人:
@symptom_set=current_user.symptom_sets.new(params[:symptom_sets])
我不知道build
在那里是否有效。
还要检查终端日志上的参数是否被调用symptom_sets
以及它是否正在发送嵌套表单属性的参数。
编辑:
我真的认为你的参数的名字会是symptom_set
。检查一下。
我有GWT的Spring入学申请。在服务器端,我为所有实体提供了简单的JpaRepository接口,例如: 有一个MyEntity类与My其他Entity类有一对一的关系。当我调用我的实体服务持久化方法时 将只保存myEntity对象。MyEntity的所有子对象都被忽略。保存myEntity对象和myOtherEntity对象的唯一方法是调用 在上面的代码之前。那么有没有更优雅的方法来使用Jp
点击轨迹记录面板的结束记录按钮: 在弹出来的名称输入框中,输入轨迹名称(默认名称为时间),点击确定,即可完成轨迹记录: 保存完成后,主界面中会展示此轨迹线,也可通过数据管理进行其他操作。
我似乎无法将@current_用户存根,以便我的before_filter:login_required通过,并获得正确的模板,而不是重定向到登录屏幕。 这是我的控制器规格: 我相信这是用于存根的较新rspec语法。 下面是一些使用控制器的示例。存根方法,但这似乎不起作用。我只想存根@current_user变量,这样看起来就像用户登录了一样,这样我就可以用实际的控制器规范测试我的控制器了。现在,
问题内容: 具有角形的这种普通(名称属性由服务器要求)形式,无法弄清楚如何使验证有效。我应该在ng-show =“ TODO”中添加什么 http://jsfiddle.net/Xk3VB/7/ ps:这只是一种形式,更复杂 谢谢 问题答案: AngularJS依靠输入名称来暴露验证错误。 不幸的是,到目前为止,不可能(不使用自定义指令)动态生成输入的名称。确实,检查输入文档,我们可以看到name
在 Netty 4.1 中,是否可以创建子通道/管道或嵌套通道/管道? 例如,我有一个管道,其中安装了各种编解码器,用于协议/序列化。在管道结束时,我将一条消息传递给我的应用程序级逻辑。过度简化的示例: 然后,这个应用逻辑的句柄方法可以执行它想要的任何顺序逻辑。这清楚地分离了我的应用程序级别逻辑,但是,我想利用Netty的ChannelPipeline提供的“拦截过滤器模式的高级形式”。我想将管道
我正在尝试处理一个对我来说相当复杂的表格... 我们有收藏,其中包含书籍(OneTo多国),文章(OneTo多国)及其作者(ManyTo多国)。 用户可以编辑一本书:他可以添加或删除一篇文章,还可以为每篇文章添加或删除一些作者。有嵌套表单:book 实体描述看起来很好,数据库是由控制台生成的,看起来是一致的。 如果我不必与使用图书版表单的作者打交道,这就很好了。如果作者存在,我有一个重复条目错误。