我试图从不同的视图中调用一个控制器的方法。我从另一个控制器中看到了以下 Rails call destroy method 的帖子,但是我的实现有问题。
我试图调用的方法在访问器控制器中。
def remove_permission_from_index
Accessor.find(params[:id]).destroy
respond_to do |format|
format.html { redirect_to tasks_url }
format.json { head :no_content }
end
end
这个控制器还有以下强参数方法
def accessor_params
params.require(:accessor).permit(:accessor_id, :access_rights, :task_id)
end
我的观点是调用以下代码
<%= link_to 'Delete', {:controller => "accessors", :accessor => elem} ,method: :remove_permission_from_index, data: { confirm: "Are you sure?" }%> </p>
其中 elem 是在任务控制器中定义的集合中的一个元素
@canEdit = Accessor.select(:task_id).where("accessor_id = ? AND access_rights = ?", current_user, true)
@canEdit.each do |p|
p.task = Task.find(p.task_id)
当我运行我的代码时,我收到以下错误
param not found: accessor
def accessor_params
params.require(:accessor).permit(:accessor_id, :access_rights, :task_id)
end
end
我可以看到访问器参数没有被传递:
Parameters:
{"_method"=>"remove_permission_from_index"}
a)如果我试图访问不同的方法,为什么要调用 accessor_params b)我做错了什么?毕竟我确实设置了:accessor => elem