【问题标题】:Use button_to to create habtm join?使用 button_to 创建 habtm 连接?
【发布时间】:2010-07-06 06:39:12
【问题描述】:

万事如意。

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

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

我的研究表明 rails button_to 可能会这样做,但我找不到有效的示例。

非常感谢。

【问题讨论】:

    标签: ruby-on-rails has-and-belongs-to-many


    【解决方案1】:

    是的,button_to 可以正常工作:

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

    将生成一个按钮,按下该按钮时将按预期传递参数中的@spot。然后,您可以(假设您有一个 current_user 方法,因为您使用的是标准用户模型框架),执行以下操作:

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

    希望对您有所帮助。

    【讨论】:

    • 感谢 vagueware。那行得通。我最初得到一个没有路由匹配的错误,但更新了 routes.rb 文件,添加了一条 flash 消息,说明该地点已添加,并且运行良好。
    • @Ray,如果这个答案是解决方案,你应该通过接受他的回答来奖励@vagueware
    • @Ray - 啊,是的,抱歉,routes.rb 文件需要快速更新,你是对的。道歉...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多