Rails 调用控制器用户定义的方法

Posted

技术标签:

【中文标题】Rails 调用控制器用户定义的方法【英文标题】:Rails call a controller user-defined method 【发布时间】:2015-12-23 09:19:01 【问题描述】:

我正在使用 rails 我有一个控制器名称簿,其中有一个用户定义的方法。我需要调用这个方法,以便我可以在控制台上看到输出。我不想在助手中调用这个方法。

def approve
    @user=current_user.users.find params[:id]
    puts '#@usery'     
  end 

我也有链接

<%= link_to 'approve',users_path,data:  :confirm => 'Are you sure to delete the folder and all of its contents?' %>

。当我单击此链接时,我想在其上调用上述方法。

【问题讨论】:

【参考方案1】:

您只需要define a route 并通过它调用它:

#config/routes.rb
resources :users do
    get :approve, on: :member
end

<%= link_to "Approve", users_approve_path(@user) %>

【讨论】:

【参考方案2】:

正如@Rich 建议的那样,您可以通过member 实现它。请注意,当您在成员块中创建 member 路由时

resources :users do
  member do
    get 'approve'
  end
end

然后你会得到params[:id]。喜欢

def approve
  @user = User.find params[:id]
  puts '#@user'     
end

当使用:on 创建member 路由时,您将获得params[:user_id]。喜欢

def approve
  @user = User.find params[:user_id]
  puts '#@user'     
end

两种情况下的路径都相同

<%= link_to "Approve", users_approve_path(@user) %>

来源Rails - Adding More RESTful Actions

编码愉快!!!

【讨论】:

以上是关于Rails 调用控制器用户定义的方法的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails - 从视图调用控制器方法

如何在 Rails 控制器中调用通道方法?

Rails 控制器方法在 Ajax 调用后不重新加载页面

阻止用户返回并查看以前提交的表单Rails

rails动作控制器中未定义的方法“devise_for”

外部模块中的 Rails Resque 未定义方法错误