我正在使用rails构建一个简单的博客工具,并且无法显示从表单中显示的变量。最令人困惑的是,帖子时间显示正确,但标题和文字都没有通过。
我的新表单页面如下:
<h1>New post</h1>
<%= form_for :blog, url: blogs_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
控制器目前是:
class BlogsController < ApplicationController
def index
end
def new
end
def create
@blog = Blog.new(post_params[:id])
@blog.save
redirect_to @blog
end
def show
@blog = Blog.find(params[:id])
end
private
def post_params
params.require(:blog).permit(:title, :body)
end
end
显示页面是:
<div id="blog">
<h1>
<%= @blog.title %>
</h1>
<p class="date">
Submitted <%= time_ago_in_words(@blog.created_at) %> ago
</p>
<p>
<%= @blog.body %>
</p>
</div>
有什么想法吗?
答案 0 :(得分:0)
变化:
def create
@blog = Blog.new(post_params[:id])
@blog.save
redirect_to @blog
end
为:
def create
@blog = Blog.new(post_params)
@blog.save
redirect_to @blog
end
它无法正常工作的原因是您只是试图保存post_params[:id]
。在创建新的博客帖子Blog.new(post_params)