我正在制作一个有两个模型Book
和Suggestion
的图书馆应用。 Suggestion
模型用于建议要添加到库中的书籍。
现在在Suggestion
模型中,我添加了一种检索图书的方法,我希望将这本书添加到数据库中。
上述守则如下:
Suggestion.rb
def get_book
h = as_json
h.delete("id")
h.delete("created_at")
h.delete("updated_at")
return Book.new(h)
end
SuggestionController.rb
def approve
@book = @suggestion.get_book
redirect_to @book, notice: "Book was successfully added into the database"
但由于@book
尚未分配id
,因此无法重定向。
所有其他控制器和型号都是通过脚手架启动的。
我应该如何保留建议中包含的信息并将其传递给图书管理员以添加到数据库中。
答案 0 :(得分:1)
您可以重新定向到新书,而不是新创建的。新书属性您可以通过redirect_to
传递,例如:
redirect_to new_book_path, notice: "Book was successfully added into the database", new_book: @book.to_json
并检查new_book
方法中的new
参数:
def new
if params[:new_book].nil?
# usual behavior
else
@book = Book.new(params[:new_book])
end
end
答案 1 :(得分:0)
并不是真正相关,但希望帮助您获得更有效的代码。
而不是
def get_book
h = as_json
h.delete("id")
h.delete("created_at")
h.delete("updated_at")
return Book.new(h)
end
你可以写
def get_book
Book.new as_json.except(*[:id, :created_at, :updated_at])
end
仅供记录:如果您只是重定向,请不要在控制器中使用@var
。如果您在模板中使用它们,则仅使用@var
。
度过愉快的一天!