在Devise中使用At.JS @Mentions [Ruby on Rails 4]

时间:2016-02-02 20:39:27

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

从我在调查此问题时所学到的知识,并从头开始创建用户而没有设计。该Devise是否不接受Hangfire请求,因此我无法使用JSON访问用户模型。有没有人实施过包含RecurringJob[GET]的解决方案?如何将用户模型与At.js的<{1}}相关联?

在@Seichleon的帮助下更新了更新。

atwho-post.coffee

Devise

发布_form.html.erb(等待数据属性)

@Mentions symbol

2 个答案:

答案 0 :(得分:1)

这有几个方面。首先让我们创建一个动作来处理我们的用户。

添加路线:

get 'share/users', as: :mentionables

将实际操作添加到控制器:(在我的情况下,控制器将是共享控制器)

class ShareController < ApplicationController
    def users
        render json: User.all, root: false
    end
end

现在,无论何时访问share/users,你都应该得到这样的回报:

[  
    {  
       "id":2,
       "email":"test@2build.it",
       "name": "sergio",
       ...
    },
    ...
]

有了这个,您可以像这样设置at.js:

$('[data-mentionable]').atwho({
    at: '@',
    data: '<%= mentionables_path %>',
    insertTpl: '${name}',
    displayTpl: '<li data-id="${id}"><span>${name}</span></li>',
});

并且应该根据他们的名字列出用户。

答案 1 :(得分:1)

Post _form.html.erb view

<%= f.text_area :body, maxlength: @maximum_length, id: 'body', data: {behavior: 'autocomplete'} %>

atwho-post.coffee

jQuery ->
  $('[data-behavior="autocomplete"]').atwho({
    at: "@",
    data: "/share/users.json",
    insertTpl: '${username}',
    displayTpl: '<li data-id="${id}"><span>${username}</span></li>',
    limit: 15,
  });