所以我现在大部分时间都在关注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”。但我没有收到闪光灯,这意味着帖子没有保存,即使当我按下提交。为什么首先,其次,我也没有真正理解代码行:@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 %>
发布于 2013-12-16 07:34:21
这是你的答案。我做了一个要点https://gist.github.com/licatajustin/7989891
下一次,您可以轻松地通过命令行进行测试。
在控制台中键入
rails c
> u = User.first
> u.posts.create(content: "My first post")
看看能不能
发布于 2013-12-16 07:26:01
你在发短信=“这是个帖子!”但是您的模型表明属性“内容”是必需的(而不是“文本”)
因此,@post.save失败了,您正在陷入失败语句中。我建议您查看创建此帖子的表单,因为它似乎没有创建正确的属性。
https://stackoverflow.com/questions/20614076
复制相似问题