2010-07-06 46 views
1

G'day全部。使用button_to创建habtm连接?

在一个Rails应用程序中,我有2个模型:用户和点,与habtm关系和连接表。在spot/show动作中,我可以创建一个表单来询问当前用户是否访问过当前点(复选框),然后单击save在连接表中创建一条记录。

这效果很好(所以我知道我的模特和人际关系都很好),但并不是那么优雅。有没有办法做到这一点,而不必使用复选框并提交按钮?最好只用一个按钮?

我的研究表明rails button_to可能会这样做,但我找不到一个工作示例。

非常感谢。

回答

5

是,button_to将正常工作:

<%= button_to "I've visited here", {:action => "visited", :id => @spot} %>

会生成一个按钮,按下将在@spot传入PARAMS按预期。然后,您可以(假设你有一个CURRENT_USER方法,因为你使用的是标准用户模式框架),做这样的事情:

def visited 
    spot = Spot.find(params[:id]) 
    current_user.spots << spot 
    redirect_to :action => "show", :id => spot 
end 

希望有所帮助。

+0

感谢vagueware。这工作。我最初得到了一个无路线匹配错误,但更新了routes.rb文件,添加了一条闪光消息,说现场已被添加,并且效果很好。 – Ray 2010-07-07 07:59:59

+0

@射线,如果这个答案是解决方案,您应该通过接受他的回答来奖励@vagueware – jigfox 2010-07-07 08:29:46

+0

@射线 - 啊,是的,对不起,routes.rb文件需要快速更新,您是对的。道歉... – p7r 2010-07-07 20:02:08