I\'m trying to figure out how to use pundit in my Rails 4 app.
I have a profile view in which I want to display a link to create a new project, subject to pundit authori
Usually I will use another class, say ViewPolicy, for the purpose in view:
class ViewPolicy < Struct.new(:user, :views)
def items_index?
user.has_role?(:sales)
end
end
So I can do something like this:
<% if policy(:views).items_index? %>
<%= link_to("Items", items_path) %>
<% end %>
very similar to @Kieran Andrews
It looks like your code may not have the necessary instance variables. Inside your show method you should have a @project - you can use Pundit to check wether the user can create it.
As you dont appear to have a @project
, you can try this instead:
<% if policy(Project.new).create? %>
You could also try using a symbol instead:
policy(:project)
<% if policy(:dashboard).show? %>
<%= link_to 'Dashboard', dashboard_path %>
<% end %>
Do you have a policy defined like so?
# app/policies/project_policy.rb
class ProjectPolicy < Struct.new(:user, :project)
# ...
end