Rails从不同的视图中调用方法

时间:2013-10-13 18:28:43

标签: ruby-on-rails

我试图在不同的视图中调用一个控制器的方法。 我看到了以下帖子Rails call destroy method from within another controller,但我的实施工作出了问题。

我试图调用的方法是在访问控制器中。

    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

1 个答案:

答案 0 :(得分:1)

可能是复制粘贴错误,但是:

<%= link_to 'Delete', {:controller => "accessors", :accessor => elem} ,method: :remove_permission_from_index, data: { confirm: "Are you sure?" }%>      </p>

应该更像:

<%= link_to 'Delete', {:controller => "accessors", :action => :remove_permission_from_index, :accessor => elem}, method: :delete, data: { confirm: "Are you sure?" }%>      </p>