我真的是铁杆新秀。现在我正在做一个关于客户管理的项目。基本上,应用程序管理项目的三个阶段,销售,报价和项目。在联系人索引页面中,对于选定的任何特定联系人,link_to按钮应将客户信息发送到销售表或报价表或项目表。创建新销售,报价或项目的另一种方法是使用Rails CRUD函数手动添加新项目。下面是联系索引页面,我切了右上角,让你看看功能是如何设置的。
我有两个问题。首先,当我点击(销售/去)按钮时,显示在销售中成功创建的记录,但所有字段都为空,空值,在销售索引页面中,在表格底部添加一个空行。第二,我不知道如何在销售模型中添加两个功能'创建'功能,一个允许用户通过点击go按钮通过联系索引页面添加销售联系人,另一个允许用户使用销售新功能创建新记录。
以下是联系人和销售模型,控制文件,routes.rb和联系人索引。
class Contact < ActiveRecord::Base
has_many :sales,:dependent => :destroy
has_many :quoters,:dependent => :destroy
has_many :projects,:dependent => :destroy
class Sale < ActiveRecord::Base
belongs_to :contact
Quote::Application.routes.draw do
match '/create', :to => 'sales#create/:id' , :as => :create
触点/ index.html.erb
<td><%= link_to raw("Go <span class=\"glyphicon glyphicon-share-alt\"></span>"), sales_path(:contact_id => contact), :class=> "btn btn-xs btn-primary ", method: :post%></td>
如果我使用以下销售模式,那么我在销售表中添加了空行。
class Sale < ActiveRecord::Base
belongs_to :contact
类SalesController&lt; ApplicationController中
def create
contact = Contact.find(params[:contact_id])
@sale = Sale.create(@contact)
如果我使用@sale = Sale.new(contact.attributes.slice(:firstName,:lastName))
,结果相同如果我使用替代以下销售模式,那么我得到了#34;无法批量分配受保护的属性:id,project,created_at,updated_at,project_ID,Social_Media,Website,Ext,Category&#34;,另外我要澄清的是联系表有不同的字段和销售表,所有不同的字段都已经列出我上面发布的异常投放。
class Sale < ActiveRecord::Base
belongs_to :contact
类SalesController&lt; ApplicationController中
def create
contact = Contact.find(params[:contact_id])
@sale = Sale.create(contact.attributes)
如果我使用@sale = Sale.create(联系人)
,结果相同我的环境ruby 1.9.3p392和rails 3.2.13
答案 0 :(得分:0)
我找到了出路,如果有人遇到同样的情况,可能会有一些提示。
处理这两个问题的方法:
class SalesController < ApplicationController
def create
unless params[:contact_id].nil?
@contact = Contact.find(params[:contact_id])
@sale = Sale.create(@contact.attributes.slice(*Sale.accessible_attributes))
else
@sale = Sale.new(params[:sale])
end
respond_to do |format|
if @sale.save
format.html { redirect_to @sale, notice: 'Sale was successfully created.' }
format.json { render json: @sale, status: :created, location: @sale }
else
format.html { render action: "new" }
format.json { render json: @sale.errors, status: :unprocessable_entity }
end
end
end
end