如何使用button_to激活控制器中的方法

时间:2011-12-31 02:38:46

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

我有一个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并修复了该错误。但是我仍然在控制器上出错。 nil id。

编辑:我能够让一切工作无误。但是现在当我点击按钮时,它表示没有相关的视图。但是,我想调用该方法,我不想要一个新的视图。最好不是在控制器中,而是在帮手中做到这一点吗?

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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