我尝试在用户的个人资料页面上呈现文字区域,以允许他们创建帖子。目前我可以查看所有用户的帖子,但我无法访问他们的个人资料页面,因为该表单无法呈现。
我确实试图改变一些东西,但是由于路由错误,表单不会发布。
我觉得自己是在错误的道路上发帖,但我不确定,建议会受到赞赏。
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 %>
答案 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| %>