简体   繁体   English

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

[英]Rails call a controller user-defined method

I am working with rails I have a controller name books and has a user defined method in it .I need to call this method so that i can see the output on console.And I dont want to call this method in helpers. 我正在使用Rails,我有一个控制器名称簿,并且其中有一个用户定义的方法。我需要调用此方法以便可以在控制台上看到输出。而且我不想在助手中调用此方法。

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


Also I Have a link 我也有一个链接

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


.When i click on this link I want to call the above method on it . 当我单击此链接时,我想在上面调用上述方法。

You'll just need to define a route and call it through that: 您只需要定义一条路线并通过该路线进行调用:

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

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

As @Rich suggested that, you can achieve it by member . 正如@Rich所建议的那样,您可以由member实现。 Please note that when you'll create a member route in member block 请注意,在会员区中创建member路线时

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

then you'll get the params[:id] . 然后您将获得params[:id] Like 喜欢

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

and when create a member route using :on then you'll get params[:user_id] . 当使用:on创建member路由时:on您将获得params[:user_id] Like 喜欢

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

Path will be same in both cases that is 两种情况下的路径都相同,即

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

Source Rails - Adding More RESTful Actions Source Rails-添加更多的RESTful动作

Happy coding !!! 编码愉快!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM