Rails 4アプリでよく学ぶ方法を理解しようとしています。Rails 4 - Pundit - ポリシーを作成する
私は、プロジェクトを作成するためのリンクを表示したいと考えています。
Iは以下の製剤のそれぞれを試してみました:
<%# if policy(Project.new).create? %>
<%# if policy(Project).create? %>
<%# if policy(@project).create? %>
<%# if policy(Projects).create? %>
<% if policy(project).create? %>
<%= link_to 'CREATE A PROJECT', new_project_path, :class=>"btn btn-info" %>
<% end %>
プロジェクトとプロファイルとの関連付けがある:
プロジェクト
belongs_to :profile
プロフィール
has_many :projects, dependent: :destroy
マイプロジェクトポリシーはあります
def new?
true
# create?
end
def create?
true
end
私は、プロファイルビューでこのラインを使用してみてくださいとき:<% if policy(Project).create? %>
私が言うエラーが出る:2を与えられた引数の
間違った番号を(、予期しない0)
このプロファイルビューでこの行を試してみると:<% if policy(@project).create? %>
私が言うエラーが出る:私は、プロファイルビューでこのラインを使用しようとすると、引数の
間違った番号
(2を与えられたが、0を予想):<% if policy(Projects).create? %>
Iを
ポリシーが見つからない
私は、プロファイルビューでこのラインを使用してみてください:<% if policy(project).create? %>
私が言うエラーが出る: <#用
未定義のローカル変数やメソッド `プロジェクト」:0x007faf5255d468>はなかったですもしかして? project_url
ビューページが異なるモデル(たとえば、プロファイル、プロジェクトを作成できるかどうかについてのそのプロファイルのテスト許可)の場合、プロジェクト承認をテストするために何か特別なことがありますか?私は立ち往生し、この問題を解決する方法を推測しています。私のプロジェクトのコントローラで
、私はメソッドを作成している:ポリシーの
def create
@project = Project.new(project_params)
@project.profile = current_user.profile
respond_to do |format|
if @project.save
format.html { redirect_to @project }
format.json { render :show, status: :created, location: @project }
else
format.html { render :new }
format.json { render json: @project.errors, status: :unprocessable_entity }
end
end
end
初期化子を:
class ProjectPolicy < ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
@user = user
@record = record
end
あなたの 'def create'メソッドには何がありますか? –
@KieranAndrews - 投稿に投稿アクションを追加しました – Mel
あなたの 'link_to 'CREATE A PROJECT''はどのビューファイルですか? –