gpt4 book ai didi

ruby-on-rails - rails 4 : Create new records through has_many association

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:32 26 4
gpt4 key购买 nike

我正在尝试通过“客户”为“事件”创建新记录,如下所示。表单正确提交,但是没有为客户创建新的事件记录。任何建议将不胜感激。

模型

class Customer::Customer < User
has_one :library, dependent: :destroy
has_many :campaigns, dependent: :destroy
accepts_nested_attributes_for :campaigns, :library, allow_destroy: true
end

class Customer::Campaign < ActiveRecord::Base
belongs_to :customer
end

客户 Controller - 仅显示更新方法

class Customer::CustomersController < ApplicationController
layout "customer_layout"
def update
session[:return_to] ||= request.referer
@customer = User.find(params[:id])
if @customer.update_attributes(customer_params)
flash[:success] = "Profile updated"
redirect_to @customer
else
flash[:notice] = "Invalid"
redirect_to session.delete(:return_to)
end
end

def customer_params
params.require('customer_customer').permit(:name, :email, :password, :password_confirmation, :country_code, :state_code, :postcode, :first_name, :surname, campaigns_attributes:[:name, :description, :start_date, :complete_date ])
end
end

以及我正在使用的表格

<%= form_for @customer do |f| %>
<%= render 'shared/customer_error_messages' %>
<%= f.fields_for :campaign do |builder| %>
<%= builder.label :name, "Campaign Name" %></br>
<%= builder.text_field :name %>
<% end %>
<div class="actions">
<%= f.submit class: "btn btn-large btn-primary"%>
</div>
<% end %>

控制台输出(有错误,如下)

Started PATCH "/customer/customers/38" for 127.0.0.1 at 2014-05-26 23:13:10 +1000
Processing by Customer::CustomersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"9ChLYna0/VfZSMJOa2yGgvWTT61XkjoYwlVup/Pbbeg=", "customer_customer"=>{"campaign"=>{"name"=>"My new campaign"}}, "commit"=>"Update Customer", "id"=>"38"}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '0e8b4ba6dc957e76948fc22bae57673404deb9fe' LIMIT 1
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", "38"]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", "38"]]
Unpermitted parameters: campaign

最佳答案

如果此表单仅执行添加一个事件,我想您应该手动将此 exect 事件添加到客户。如果您以这种方式更新所有广告系列模型,您应该将所有广告系列都排列在一起。因此,这意味着另一个 Controller 操作。

另一种方法:检查参数是否包含字段 campain 然后将其添加到 customer 对象:

def update
session[:return_to] ||= request.referer
@customer = User.find(params[:id])

if new_campaign_customer_params.has_key? :campaign
@customer.campaigns << Campaign.new(new_campaign_customer_params)
if @customer.save
flash[:success] = "Profile updated"
redirect_to @customer
else
flash[:notice] = "Invalid"
# you should rerender your view here, set it path
render 'your_view'
end
else
if @customer.update_attributes(customer_params)
flash[:success] = "Profile updated"
redirect_to @customer
else
flash[:notice] = "Invalid"
redirect_to session.delete(:return_to)
end
end
end

def new_campaign_customer_params
params.require('customer_customer').permit(campaign_attributes:[:name, :description, :start_date, :complete_date ])
end

检查一下,不确定它是否有效。

或者它可能会如何在评论中提出建议:更改 campaigns_attributes => campaign_attributes in customer_params 方法,以及 f. fields_for :campaigns 形式(属于@Nikita Chernov)

关于ruby-on-rails - rails 4 : Create new records through has_many association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com