我有一个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。
编辑:我能够让一切工作无误。但是现在当我点击按钮时,它表示没有相关的视图。但是,我想调用该方法,我不想要一个新的视图。最好不是在控制器中,而是在帮手中做到这一点吗?编辑:最后,出于某种原因,当我点击“关注”按钮时,一切正常。但是,当我单击“取消关注”按钮时,它不起作用。
答案 0 :(得分:2)
您不一定需要控制器操作的视图。您可以只渲染任意文本。
def follow
...
render :text => 'ok', :layout => false
end
或者,您可以重定向到另一个页面,而不是呈现视图。
def follow
...
redirect_to :action => :index
end