2012-08-01 6 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 

내가 뭘보고 싶은 것은 마지막으로 "자바 스크립트 성경"을 "자바 성경"에 수정하면 업데이트되지 않고 새로운 버전을 만들 수 있습니다. 지금 양식 책에 갈 때 나는 아무것도 볼 수 없다. 그리고 내가 이상한 이유로 그렇게한다면 그것은 나를 업데이트 만 할 수있게 해줍니다.

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"이없는 책입니다.

관련 문제