我是ruby的新手,试图按照官方文档创建一个基本表单来创建帖子:
<%= form_for @post, :url => { :action => "create" }, :html => {:class => "nifty_form"} do |f| %>
<%= f.text_field :title %>
<%= f.text_area :entry, :size => "60x12" %>
<%= f.submit "Create" %>
<% end %>
表单是成功添加一个条目到数据库,但是一个空的,我想我必须在控制器中丢失一些东西?我需要以某种方式传递变量吗?
def create
@post = Main.create
end
答案 0 :(得分:1)
基本的创建操作可能如下所示。您首先初始化一个新帖子。根据是否成功保存,您可以继续。
# app/controllers/posts_controller.rb
class PostsController < ActionController::Base
def create
@post = Post.new(params[:post])
if @post.save
redirect_to @post, notice: 'Post has been created.'
else
render :new
end
end
end
您可以缩短表格。
<%= form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.text_area :entry, :size => "60x12" %>
<%= f.submit %>
<% end %>
当您生成一个支架时,您可以看到这些代码中的优秀示例代码,因此我建议您尝试$ rails generate scaffold Post title body:text
并通过示例进行学习。
答案 1 :(得分:0)
提交表单会将输入到该表单中的值(以及其他一些信息)作为名为“params”的哈希传递给控制器 - params将包含一个标有表单名称的块,在本例中为“post” ”。
您需要在创建新对象时使用params中的post块。
def create
@post = Main.new(params[:post])
if @post.save
# handles a successful save
else
# handles validation failure
end
end
答案 2 :(得分:0)
尝试:
@post = Main.new(params[:post])
@post.save