GVS GVS - 1 year ago 55
Ruby Question

How is this 'if statement' incorrect?

I am trying to write an if statement in a dropdown menu that when clicked, will display the options "delete" and "edit" for the user who owns the post. While it will show the options "report post" and "block user" for all other users.

I added this to my posts controller and it works correctly.

def destroy
@post = Post.find(params[:id])
if current_user == @post.user
redirect_to root_path

I created this if statement in my dropdown and it does not work correctly. I tried to delete a post I own and seen "Report post", I then tried to delete another user's post and still seen "Report post". It's suppose to show me "Delete" when I try to delete my own posts.

<% if current_user == @post.user %>
<li><%= link_to 'Delete post', post, :method => :delete %></li>
<% else %>
<li><a href"#">Report post</a></li>
<% end %>

Answer Source

you have error here:

<li><%= link_to 'Delete post', post, :method => :delete %></li>

and you need that:

<li><%= link_to 'Delete post', @post, :method => :delete %></li>

or here:

<% if current_user == @post.user %>

and you need that:

<% if current_user == post.user %>
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download