试图让用户帖子工作

时间:2013-12-16 15:05:53

标签: ruby-on-rails

所以我现在大部分时间都在关注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 %>

2 个答案:

答案 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失败了,你陷入了失败的声明。我建议您需要查看创建此帖子的表单,因为它似乎没有创建正确的属性。