我想要的是创建个人资料页面,我可以在其中查看上一个书籍字段,如果客户更改了文本,那么它将创建新书。
我有以下带有has_many关系的模型
Customer -- ID, First, Last, Email
Book -- ID, Description
Book_Managers -- ID, Customer_id, Book_id, Visible
现在我所拥有的是一个客户编辑,它允许我通过从书籍,电话等更多模型中呈现来看到多个表单......
这是我的客户控制器
def edit
@customer = Customer.find(params[:id])
if @customer.books.any?
@book = @customer.books.order("created_at DESC").first
else
@book = @customer.books.build
end
end
我想看到的是,如果我在预订表单时创建了一个新实例,我应该看到最后一个并且能够将“The JavaScript Bible”修改为“The Java Bible”并且它不会更新它而只是创建一个新版本。现在,当我去表格书时,我什么也看不见。如果我出于某些奇怪的原因,它只允许我更新。
class BooksController < ApplicationController
def create
@book = current_customer.books.build(params[:book])
if @book.save
flash[:success] = "Book Created"
redirect_to root_url
else
render 'customer/edit'
end
end
def index
@books = Book.all
end
def destroy
@book.destroy
redirect_to root_url
end
end
增加了这个
def update
@book = current_customer.books.build(params[:book])
if @book.save
flash[:success] = "Book Updated"
redirect_to root_url
else
render 'customer/edit'
end
端
对于我的图书管理员,现在唯一的问题是我的协会,我似乎无法找到当前客户的任何书籍。我的查询有问题吗?
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以这样做:
def update
params = params[:book].merge(:previous_version => params[:id])
@book = current_customer.books.create(params[:book])
end
它将在每次更新时创建一本新书。最后一个版本将是没有“previous_version”的书。