所以我现在大部分时间都在关注Hartl教程,但我想让它成为一个帖子,然后该帖子将属于他,并在一个单独的页面上以简单的方式显示它。没有推特喜欢的东西。
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Post created!"
redirect_to root_url
else
render 'posts/index'
end
end
现在我在post_controller中有这个。我有提交后发布到@post的表单。但我没有收到flash消息,这意味着即使按下提交,帖子也没有保存。
为什么首先是这个,其次,我也没有真正得到代码行:@post = current_user.posts.build(post_params)
。那个版本究竟应该做什么?我不应该只做一个Post.new(post_params)?
并稍微修改它以使帖子也属于用户吗?
我对用户提出了要点并发布了模型:https://gist.github.com/Veske/7988593
服务器日志:
Started POST "/posts/index" for 127.0.0.1 at 2013-12-16 17:19:52 +0200
Processing by PostsController#index as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"iT08NreZv83WtImK6V9/jXZOpgtzwSLjlxB7T/wn0E4=", "text"=>"This is a s
post!", "commit"=>"Submit!"}
Rendered posts/index.html.erb within layouts/application (1.0ms)
User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = '390d667f7603eee5976fd8500a9a8776c
d3' LIMIT 1
Rendered layouts/_menu.html.erb (4.0ms)
Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 21ms (Views: 19.0ms | ActiveRecord: 1.0ms)
这是我的表格
<%= form_tag(@post) do %>
<div class="forms">
<%= text_area_tag(:content, nil, placeholder: "Type text in here...")%>
<%= submit_tag 'Submit!' %>
</div>
<% end %>
答案 0 :(得分:2)
这是你的答案。我提出了一个要点https://gist.github.com/licatajustin/7989891
下次,您可以通过命令行进行测试,轻松检查。
在您的控制台中,输入
rails c
> u = User.first
> u.posts.create(content: "My first post")
并查看是否有效
答案 1 :(得分:1)
你发送的文字=“这是一篇帖子!” 但是你的模型表明属性'content'是必需的(不是'text')
因此@ post.save失败了,你陷入了失败的声明。我建议您需要查看创建此帖子的表单,因为它似乎没有创建正确的属性。