我正在关注本教程:Youtube rails tutorial
他正在创建一个基本网站,人们可以在其中添加图书,查看图书,评分,删除图书等。在主控制器脚本中,他定义了一个函数" new"添加这样的新书:
def new
@book = Book.new
end
def create
@book = Book.new(book_params)
if @book.save
redirect_to root_path
else
render 'new'
end
end
def book_params
params.require(:book).permit(:title, :description, :author)
end
他还使用了一个creat函数。他有一个新的"视图命名为new.html.erb,它实际上显示了用户可以添加新书的表单,这与" new"控制器中显示的功能。 new.html.erb文件只有这个:
<h1>new book</h1>
<%= render "form" %>
我得到的大部分内容,我不能得到的是,因为&#34; new&#34;功能没有做任何事情而且&#34;创建&#34;功能是为&#34; new&#34;做所有工作的人。功能,它们有什么关系?我问这是因为&#34; new&#34;功能没有&#34;呼叫&#34;创造功能除了工作之外&#34;创造&#34;功能确实显示在网页中。它们是通过&#34; @ book&#34;?
连接的答案 0 :(得分:1)
new
操作呈现new.html.erb
,其中包含用于创建新图书的表单。当用户点击该表单上的submit
时,会使用create
操作创建该新书。
我建议您阅读更多教程并阅读guides,以全面了解Rails的工作原理。
答案 1 :(得分:1)
在Rails中,new
操作显示用于创建资源的表单。
create
会在用户发布表单时作出响应。
class BooksController < ApplicationController
# GET /books/new
def new
@book = Book.new
end
# POST /books
def create
@book = Book.new(book_params)
# ...
end
end
我问这是因为&#34; new&#34;功能没有&#34;呼叫&#34;创造 功能完全,但工作&#34;创建&#34;功能确实显示在 网页。它们是通过&#34; @ book&#34;?
连接的
您从根本上对Web应用程序和MVC的工作方式感到困惑。 Web应用程序响应来自用户的请求。服务器发送一个响应,就是这样。该计划结束。服务器不会等待用户点击桌面程序。*
他们没有&#34;连接&#34;一点都不new
和create
在不同的路径上响应不同类型的请求。永远不会在同一个请求中调用它们。
答案 2 :(得分:0)
新操作显示并初始化表单。在单击“创建”按钮之前完成的内容将发送到BooksController的创建操作。此操作将使用参数创建一个新的Book对象,并保存在DB中。 这是MVC模式。你应该阅读它:https://www.sitepoint.com/the-basics-of-mvc-in-rails-skinny-everything/