【问题标题】:How to use button_to to activate a method in a controller如何使用 button_to 激活控制器中的方法
【发布时间】:2011-12-31 02:38:45
【问题描述】:

我有一个 rails 3 应用程序,我正在尝试使用按钮来激活控制器中的方法。这意味着在我的 users_controller.rb 我有

def follow
  ...
  ...
end

在视图 (users/show.html.erb) 中,我想要一个按钮来调用该方法。 我目前有<%= button_to("Un-Follow", :controller=>"users", :action=> "follow") %>,但是当我单击按钮时出现以下错误:No route matches [POST] "/users/5/follow" 知道为什么吗?

我不知道如何解决这个问题。

编辑:我修复了 config/routes.rb 并修复了该错误。但是我仍然在控制器上遇到错误。没有身份证。

编辑:我能够让一切正常工作。但是现在当我单击按钮时,它说没有关联的视图。但是,我只想调用那个方法,我不想要一个新的视图。最好不要在控制器中,而是在助手中进行?

编辑:最后,由于某种原因,当我单击“关注”按钮时,一切正常。但是,当我单击“取消关注”按钮时,它不起作用。

【问题讨论】:

  • 向我们展示更多代码。此外,编辑答案并删除您已修复的错误描述。
  • 您想要正确的解决方案还是只想让错误消息消失。这个实现比你想象的要远得多。
  • @Planetpluto:如果你不介意,我会接手这个问题并编辑它以适合我的答案(你接受了):-)

标签: ruby-on-rails button methods error-handling


【解决方案1】:

控制器操作不一定需要视图。您可以只渲染任意文本。

def follow
    ...
    render :text => 'ok', :layout => false
end

或者,您可以重定向到另一个页面,而不是呈现视图。

def follow
    ...
    redirect_to :action => :index
end

【讨论】:

  • 我认为需要有人向他展示如何正确执行此操作,而不是修复错误消息
猜你喜欢
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2015-05-16
相关资源
最近更新 更多