railsで編集機能が反映されません。
ログインアプリ
ログアウト
マイページ
投稿する
削除
編集
dddddd
いま現在アプリはこのようになっています。
編集ボタンを押すと
http://localhost:3000/posts/4/edit
ログインアプリ
ログアウト
マイページ
投稿する
dddddd 投稿
このようになるのでddddddの部分をupdatedに変えて
ログインアプリ
ログアウト
マイページ
投稿する
updated 投稿
投稿ボタンを押して
http://localhost:3000/posts/5
ログインアプリ
ログアウト
マイページ
投稿する
you posted
go to home
go to homeを押してホームに戻っても
ログインアプリ
ログアウト
マイページ
投稿する
削除
編集
dddddd
このようにddddddのままで困っています。
routes
1Rails.application.routes.draw do 2 devise_for :users 3 4 root to: 'posts#index' 5 resources :posts 6 resources :users 7 end 8
PostsController
1class PostsController < ApplicationController 2 def index 3 4 @posts = Post.all 5 end 6 7 def new 8 @post = Post.new 9 end 10 11 def create 12 Post.create(post_params) 13 end 14 15 16 def edit 17 @post = Post.find(params[:id]) 18 end 19 20 def update 21 @post = Post.find(params[:id]) 22 if post.user_id == current_user.id 23 post.update(post_params) 24 end 25 end 26 27 def show 28 end 29 30 def destroy 31 post = Post.find(params[:id]) 32 if post.user_id == current_user.id 33 post.destroy 34 end 35 end 36 37 38 private 39 def post_params 40 params.require(:post).permit(:text).merge(user_id: current_user.id) 41 end 42end
index
1<div class="posts"> 2 <% @posts.each do |post| %> 3 <li> 4 <%= link_to '削除', "/posts/#{post.id}", method: :delete %> 5 </li> 6 <li> 7 <%= link_to '編集', "/posts/#{post.id}/edit", method: :get %> 8 </li> 9 10 <%= simple_format(post.text) %> 11 <% end %> 12</div> 13
new
1<div class = "posts"> 2 <%= form_for(@post) do |f| %> 3 <%= f.text_field :text %> 4 <%= f.submit '投稿' %> 5 <% end %> 6</div> 7
edit
1<div class = "posts"> 2 <%= form_for(@post) do |f| %> 3 <%= f.text_field :text %> 4 <%= f.submit '投稿' %> 5 <% end %> 6</div> 7
update
1<div class = "posts"> 2 <h3> you posted </h3> 3 4<a class = " btn " href= "/posts"> go to home </a> 5 6 7</div> 8
どうかお力を貸していただけると助かります。よろしくお願いします。
postcontroller
def update
@post = Post.find(params[:id])
if @post.user_id == current_user.id
post.update(post_params)
end
end
postから@postに変更させていただきました。
結果このようにエラーが出ました。
NameError in PostsController#update
undefined local variable or method `post' for #<> Did you mean? @post
@post = Post.find(params[:id])
if @post.user_id == current_user.id
post.update(post_params) 赤のライン
end
end
回答1件
あなたの回答
tips
プレビュー