2012-08-01 66 views
0

我想要的是创建一个简介页面,在那里我可以查看以前的书籍字段,如果客户改变文本,那么它会创建一个新的书籍。想要创建一个新的书籍实例而不是更新

我有以下型号的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 

要书的形式,我应该看到,当我想看到的是,如果我创建了一个新的实例最后并能够将“JavaScript圣经”修改为“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

你可以做这样的事情:

def update 
    params = params[:book].merge(:previous_version => params[:id]) 
    @book = current_customer.books.create(params[:book]) 
end 

它将创建每次更新一本新书。最后的版本将是没有“previous_version”的书。

相关问题