私はDeviseで認証されたユーザーが投稿を作成できるシンプルなWebサイトを作成しています。新しい投稿を作成すると、このエラーに遭遇して投稿にリダイレクトされません。ここに私の投稿コントローラだ:rails - PostsControllerのNoMethodError#未定義メソッド `post_url 'を作成
class PostsController < ApplicationController
before_filter :authenticate_user!
def new
@post = current_user.posts.new
end
def create
@post = current_user.posts.new(post_params)
if @post.save
redirect_to @post
end
end
def show
@post = Post.find_by_id(params[:id])
end
private
def post_params
params.require(:post).permit(:title, :content)
end
end
ここに私のroutes.rbをです:
Rails.application.routes.draw do
devise_for :users
resources :users do
resources :posts
end
root 'posts#new'
end
ポスト・リソースがユーザー内でネストされているので、私は多分、私は私のコントローラでこれを持っている必要があります考えた:
if @post.save
redirect_to [email protected]
end
しかし、それはPostsController#create errorでSyntaxErrorを生成します。
コントローラが作成された後にコントローラが投稿にリダイレクトされないという問題を誰も見てもらえますか?どんな助けでも大歓迎です。
これはうまくいくはずですが、今は私が得たようです: {:action => "show"、:controller => "posts"、:id => nil、:user_id =>#}必須キーがありません:[:id] 何らかの理由で、IDが正しく渡されていないようです。 –
@AdamLazarusはい、ユーザーIDを探しています。私は答えを編集して、一度それを試してみてください。 – dp7
運がいいえ!それでも同じエラーが発生します。 [current_user、@post]でも試してみましたが、うまくいきませんでした。エラーメッセージには、id => nilとrequired keys:[:id]がありませんので、新しい投稿IDが経路に正しく渡されていないと問題はありませんか? –