2013-10-13 86 views
0

我想從另一個視圖中調用一個控制器的方法。 我看到以下帖子Rails call destroy method from within another controller,但我在做我的執行有問題。Rails從不同視圖調用方法

我試圖調用的方法是在訪問器控制器中。

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 

該控制器還具有以下強PARAM方法

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"} 

一)爲什麼是accessor_params被稱爲如果我試圖訪問不同的方法 b)我做錯了什麼?畢竟我做的設置:accessor => elem

回答

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> 
+0

嘿對不起我的評論的延遲,但這些結果在下面的錯誤沒有路由匹配'{:action =>「remove_permission_from_index」,:controller =>「accessors」,:accessor =>#<訪問者id:nil,task_id:12>},任何有關如何映射方法的建議到一條路線? – Quantico