这些导轨功能如何连接?

时间:2017-04-27 01:10:01

标签: ruby-on-rails ruby

我正在关注本教程: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;?

连接的

3 个答案:

答案 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;一点都不newcreate在不同的路径上响应不同类型的请求。永远不会在同一个请求中调用它们。

答案 2 :(得分:0)

新操作显示并初始化表单。在单击“创建”按钮之前完成的内容将发送到BooksController的创建操作。此操作将使用参数创建一个新的Book对象,并保存在DB中。 这是MVC模式。你应该阅读它:https://www.sitepoint.com/the-basics-of-mvc-in-rails-skinny-everything/