Хорошо, сначала я хочу сказать, что я столкнулся с этой проблемой раньше, и ее обычно быстро исправить. Но на этот раз я действительно запутался.Неопределенный метод 'email' для nil: NilClass? - Ошибка Ruby on Rails
У меня есть простая почтовая программа, где пользователи могут публиковать статусы/изображения. Я добавляю функциональность для добавления комментариев, но вот проблема, с которой я сталкиваюсь:
на странице моих сообщений, я перечисляю все комментарии, а также возможность добавлять новые комментарии.
сообщений СТРАНИЦА:
<%if @post.is_status?%>
<h5><%[email protected]%>:</h5>
<%[email protected]%><br>
Posted:<%[email protected]_at%><br><hr>
<%else%>
<h5><%[email protected]%>:</h5>
<%=image_tag @post.body%><br>
Posted:<%[email protected]_at%><br><hr>
<%end%>
<h6>Comments:</h6>
<%@comments.each do |x|%>
<%@user = x.user%>
<%=x.comment%> -<%[email protected]%> <br>
<%end%>
<%=form_for @comment do |x| %>
<%=x.hidden_field :post_id%>
<%=x.hidden_field :user_id%>
<%=x.label :comment%>
<%=x.text_area :comment%><br>
<%=x.submit%>
<%end%>
мои посты показывают в контроллере сообщений:
def show
@post = Post.find(params[:id])
@comments = @post.comments.all
@comment = @post.comments.new(user_id: current_user.id)
end
и, наконец, моей создать действие в моем комментарии контроллера:
def create
@comment=Comment.create(params.require(:comment).permit(:comment, :post_id, :user_id))
if @comment.save
redirect_to root_path, notice: "saved"
else
redirect_to root_path, notice: "not saved"
end
end
когда запрос проходит через я получаю следующее из журнала рельсов:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"lOHcmJJ3ptDiizpt95/1xHQ4GQkcjyHsAfTHiH/23f0Rjds7pI0Ii0XzcZ3UFGCKap7jwvdl7pV8wr+8oNu+mg==", "comment"=>{"post_id"=>"22", "user_id"=>"1", "comment"=>"test123"}, "commit"=>"Create Comment"}
Так что я могу видеть, как пропускается user_id = 1.
Выход моего шоу страницы пост дает мне:
comments:
test123 -#<User:0x007fad5b4311a0>
Так я могу видеть пользователь есть! если я изменить мой пост-шоу страницу как так:
<%=x.comment%> -<%[email protected]%> <br>
я получаю следующий результат:
test123 -#<User id: 1, first_name: nil, last_name: nil, profile_picture: nil, created_at: "2015-07-02 03:51:14", updated_at: "2015-07-06 21:34:07", email: "[email protected]", encrypted_password: "$2a$10$7irTux0aMTbSXZUyB3Ubbux0MBhF.Z0Ll0QyY8pS1mv...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 12, current_sign_in_at: "2015-07-06 21:34:07", last_sign_in_at: "2015-07-06 21:28:18", current_sign_in_ip: #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>, last_sign_in_ip: #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>>
Так я могу видеть, что user.email действует ...
однако при я изменить пост-шоу страница как так:
<%=x.comment%> -<%[email protected]%> <br>
Я получаю
undefined method `email' for nil:NilClass
Это странно, я знаю, что есть пользователь, и адрес электронной почты является действительным для этого пользователя, как видно из user.inspect
Любые идеи, почему его дает мне ошибку всухую класса?
Можете ли вы разместить полную страницу показа? – Pavan
только что опубликовал полную страницу! –