Rails:帖子的用户form_for不起作用

时间:2016-09-19 03:03:33

标签: ruby-on-rails ruby

我尝试在用户的个人资料页面上呈现文字区域,以允许他们创建帖子。目前我可以查看所有用户的帖子,但我无法访问他们的个人资料页面,因为该表单无法呈现。

我确实试图改变一些东西,但是由于路由错误,表单不会发布。

我觉得自己是在错误的道路上发帖,但我不确定,建议会受到赞赏。

class PostsController < ApplicationController

def index
    @posts = Post.all
end

def new
    @post = Post.new
end

def create
    @post = current_user.posts.build(post_params)
    if @post.save
        flash[:success] = "Posted!"
        redirect_to root_url
    else
        flash[:notice] = "Post could not be submitted"
        redirect_to users_path
    end
end

private

def post_params
    params.require(:post).permit(:user_id, :content)
end
end
_post_form.html.erb

<%= form_for :post, user_posts_path, {method: "create"} do |f| %>
<%= f.text_area :content, size: "60x12", placeholder: "What do you want to say?" %>
<%= f.submit "Post" %>
<% end %>    

2 个答案:

答案 0 :(得分:0)

请检查佣金路线,我认为您提供了

resources :users do 
  resources :posts
end

在routes.eb

所以

<%= form_for :post, user_posts_path(@user), html: { method: "post"} do |f| %>
控制器中的

def new
  @post = Post.new
  @user = current_user
end

答案 1 :(得分:0)

没有名为create的HTTP动词,您需要更改form_for中提及的方法,而不是:

<%= form_for :post, user_posts_path, {method: "create"} do |f| %>

试试这个:

<%= form_for :post, user_posts_path, {method: "post"} do |f| %>