Ruby on rails 想要创建一个新的图书实例而不是更新
我想要的是创建一个配置文件页面,在这里我可以查看“上一本书”字段,如果客户更改了文本,那么它将创建一个新的图书 我有以下型号与您有很多关系Ruby on rails 想要创建一个新的图书实例而不是更新,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,我想要的是创建一个配置文件页面,在这里我可以查看“上一本书”字段,如果客户更改了文本,那么它将创建一个新的图书 我有以下型号与您有很多关系 Customer -- ID, First, Last, Email Book -- ID, Description Book_Managers -- ID, Customer_id, Book_id, Visible 现在我拥有的是一个客户编辑,它允许我通过渲染更多模型(如书籍、手机等)来查看多个表单 这是我的客户控制员 def edit @cust
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
我想看到的是,如果我在进入book form时创建了一个新实例,我应该看到最后一个实例,并且能够将“JavaScript圣经”修改为“Java圣经”,它不会更新它,而只是创建一个新版本。现在当我去看表格时,我什么也没看到。如果我因为某种奇怪的原因这么做,那只是允许我更新
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
params = params[:book].merge(:previous_version => params[:id])
@book = current_customer.books.create(params[:book])
end
它将在每次更新时创建一本新书。最后一个版本将是没有“上一个版本”的书。我也使用它来允许客户向朋友展示内容或不展示内容。所以我不能用这个,所以我需要我的第二个模型
def update
params = params[:book].merge(:previous_version => params[:id])
@book = current_customer.books.create(params[:book])
end