【问题标题】:Rails4: change boolean value with ajax remotelyRails4:使用 ajax 远程更改布尔值
【发布时间】:2025-12-10 17:00:01
【问题描述】:

例如,我有一个模型Post,其布尔值称为active,如何轻松地从index.html.erb 中的帖子列表中更改truefalse 的值像 remote: true 这样的 link_to 或 button_to 助手?

【问题讨论】:

    标签: javascript ruby-on-rails ajax ruby-on-rails-4


    【解决方案1】:

    你可以得到一个控制器方法,比如toggle_active 来设置你的postactive 状态,如下所示:

    def toggle_active
      @post = Post.find(params[:id])
      status = !@post.active
      @post.active = status
      respond_to do |format|
        if @post.save
          render json: "success"
        else
          render json: "failure"
        end
      end
    end
    

    然后,在您的routes.rb 中获取此操作的路线:

    get 'post/:id/toggle-active' => 'post#toggle_active'
    

    这应该会给你一个toggle_active_post_path 或类似的东西。

    这就是您现在将从视图内部定位的路径,根据具体情况使用 button_to 或 link_to。

    <%= link_to "Activate/Deactivate", toggle_active_post_path(id: post.id), remote: true %>
    

    是的,您设置了remote: true 以启用 ajax 调用。

    还有一点:你需要定义一个对应的toggle_active.js.erb文件,来处理来自ajax的响应。

    希望这会有所帮助...

    【讨论】: