前提・実現したいこと
・user_idは保存されています。
・PHPMyAdminで入力すれば保存可能です。画面上(index.html、indexアクション)では表示されます。
発生している問題・エラーメッセージ
投稿画面で送信しても、入力したテキストが表示されません。
PHPMyAdminを確認するとbulog_titleとblog_textはNullとなっていますが、user_idには数字がはいっています。
画面上(index.html)では、投稿後に表示され、詳細、削除、編集のリンクが表示されます。
詳細(show.html)をクリックするとエラー文がでます。
paramsが上手く機能していなように感じます。
エラーメッセージ
NoMethodError in Blogs#show
undefined method `blog_title' for nil:NilClass
該当のコード
show.html
1<%= @blogs.blog_title %> 2<%= @blogs.blog_text %>
その他のソースコード
blogs_controller def index @blogs=Blog.all.order("created_at DESC") end def new end def create Blog.create(blog_title: blog_params[:blog_title], blog_text: blog_params[:blog_text], user_id: current_user.id) end (中略) def show @blogs = Blog.find(params[:id]) end private def blog_params params.permit(:blog_title, :blog_text) end
index.html <% @blogs.each do |blog| %> <p><%= blog.blog_title %></p> <ul class="more_list"> <li> <%= link_to '詳細', "/blogs/#{blog.id}", method: :get %> </li> <% if user_signed_in? && current_user.id == blog.user_id %>
routes root 'blogs#top' get 'blogs' => 'blogs#index' get 'blogs/new' => 'blogs#new' post 'blogs' => 'blogs#create' delete 'blogs/:id' => 'blogs#destroy' get 'blogs/:id/edit' => 'blogs#edit' patch 'blogs/:id' => 'blogs#update' get 'blogs/:id' => 'blogs#show'
new.html <%= form_tag('/blogs', method: :post) do %> <h3> 投稿する </h3> <input type="text" name="title" placeholder="タイトル"> <textarea name="text" placeholder="text" rows="40" cols="100"></textarea> <input type="submit" value="SEND"> <% end %> </div>
試したこと
ネットで調べてみましたが、理解できず...具体的に教えていただけると助かります。
補足情報(FW/ツールのバージョンなど)
バージョン:rails5.2
回答1件
あなたの回答
tips
プレビュー