jQuery回调设置rails用户值为true

时间:2015-10-04 17:04:04

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

如果他们已经通过插件“jQuery Joyride”完成了我的jQuery之旅,我希望将我的用户模型上的布尔值设置为true。

我不太清楚我应该怎么做但这听起来是为已经看过它的用户禁用巡演的最佳方法。

$('#contentID').joyride({
  'tipLocation': 'bottom',         // 'top' or 'bottom' in relation to parent
  'nubPosition': 'auto',           // override on a per tooltip bases
  'scrollSpeed': 300,              // Page scrolling speed in ms
  'timer': 2000,                   // 0 = off, all other numbers = time(ms) 
  'startTimerOnClick': true,       // true/false to start timer on first click
  'nextButton': true,              // true/false for next button visibility
  'tipAnimation': 'pop',           // 'pop' or 'fade' in each tip
  'pauseAfter': [],                // array of indexes where to pause the tour after
  'tipAnimationFadeSpeed': 300,    // if 'fade'- speed in ms of transition
  'cookieMonster': true,           // true/false for whether cookies are used
  'cookieName': 'JoyRide',         // choose your own cookie name
  'cookieDomain': false,           // set to false or yoursite.com
  'tipContainer': body,            // Where the tip be attached if not inline
  'postRideCallback': $noop,       // a method to call once the tour closes
  'postStepCallback': $noop        // A method to call after each step
});

任何帮助都会很棒 - 提前谢谢。

1 个答案:

答案 0 :(得分:1)

向用户控制器添加操作以更新标记将允许您从jQuery joyride标记游览完成。

在您的routes.rb中添加成员到用户资源

resources :users do
  member do
    post :tour_complete
  end
end

使用来自兜风的post_ride_callback,您可以使用

调用该操作
post_ride_callback: function() {
  $.post('<%= tour_complete_user_path(current_user) %>');
}

需要考虑的是创建一个表来跟踪用户执行的操作,这样您就可以通过在POST请求中传递ID来进行多次巡视并将其标记为完成。

编辑2015年10月11日

尝试将巡演完成操作设置为以下内容。

class UsersController < ApplicationController
  def tour_complete
     current_user.update_column(:completed_tour, true)
     respond_to do |f|
       f.html { redirect_to :back }
       f.json { render json: { success: true } }
     end
  end
end