0
エラーメッセージをレンダリングすることはできませんが、私はこのエラーで終わる:助けになるとRailsは:私はモデルの検証から発生するエラーメッセージをレンダリングしようとしている
First argument in form cannot contain nil or be empty
うまくいけば、提供されたコードを...私は@commentの代わりにcommentを使用したときにロードするページを少なくとも取得することができましたが、実際のオブジェクトではなくシンボルだったため、エラーの部分をレンダリングする方法がわかりませんでした。オブジェクトのインスタンス変数に変更したので、エラーが発生します。
エラーメッセージ部分
<% if object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(object.errors.count, "error") %>
</div>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
コメントフォーム
<%= form_for @comment, url: comments_path do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.hidden_field :user_id, value: current_user.id %>
<%= f.hidden_field :post_id, value: post.id %>
<%= f.text_area :content, size: "60x2", placeholder: "Comment on this post..." %>
<%= f.submit "Comment" %>
ビューからレンダリングされている場所なので、投稿フォーム
<%= form_for [@user, @post] do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_area :content, size: "60x12", placeholder: "What do you want to say?" %>
<%= f.submit "Post" %>
<% end %>
class CommentsController < ApplicationController
def index
@comments = Comment.all
end
def new
@comment = Comment.new
@user = User.find(params[:user_id])
end
def create
@user = current_user
#@post = Post.find(params[:post_id])
@comment = @user.comments.build(comment_params)
if @comment.save
flash[:success] = "Comment Posted!"
redirect_back(fallback_location: root_path)
else
flash[:notice] = "Could not post comment"
redirect_back(fallback_location: root_path)
end
end
private
def comment_params
params.require(:comment).permit(:content, :user_id, :post_id)
end
end
class PostsController < ApplicationController
def index
@posts = Post.all
@user = User.find(params[:user_id])
end
def new
@post = Post.new
@user = User.find(params[:user_id])
end
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Posted!"
redirect_to user_path(current_user)
else
flash[:notice] = "Post could not be submitted"
redirect_to users_path
end
end
private
def post_params
params.require(:post).permit(:content)
end
end
'object:f.object?'これは間違いです。 'object:@ comment'、投稿:' object:@ post' – mrvncaragay
私の投稿#indexアクションで@comment変数を宣言することで、ビューをレンダリングする場所になるので、それを取得できましたから –