2012-08-01 69 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」的書。

相關問題