-2

我刚刚开始学习 Ruby on Rails。我真正难以理解的一件事是数据如何从 .html.erb 文件传输到控制器文件。

考虑以下 new.html.erb

<%= form_for :post, url: posts_path do |f| %>
  <p>
    <%=f.label :title %>
    <%=f.text_area :title %>
  </p>
  <p>
    <%=f.label :body %>
    <%=f.text_area :body %>
  </p>
  <p>
    <%=f.submit %>
  </p>
<% end %>

然后是我的控制器文件,posts_controller.rb

class PostsController < ApplicationController

  def index
    @post=Post.all
  end

  def new
  end

  def create
    @post=Post.new(post_param) #
    @post.save
    redirect_to @post
  end

  def show
    @post=Post.find(params[:id])
  end

  private 

  def post_param
    params.require(:post).permit(:title, :body)
  end

end    

好的,现在是我不明白的部分。

  1. create 方法如何获取 'post' 的值。
  2. 你能解释一下<%= form_for :post, url: posts_path do |f| %>实际上是做什么的吗?
4

1 回答 1

0

form_for 发送一个指向posts_path 的http POST 请求。你的路由文件可能会说类似“resources :post”的内容,它会自动将任何 http POST 请求定向到控制器中的“create”方法。在这个 POST 请求中,您输入到表单中的所有数据都将在 params 变量中。

于 2017-07-20T18:31:27.077 回答