小编Rub*_*nez的帖子

Rails 4:在特定页面中禁用Turbolinks

我正在尝试使用Rails 4和Turbolinks在具体页面中创建JS代码段.我尝试过标准解决方案:

<script type="text/javascript">

    var ready = function() {
        // Bla bla
    };

    $(document).ready(ready);
    $(document).on('page:load', ready);
</script>
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.我的代码片段是这样的:

<script type="text/javascript">
  function ismready() 
  {
    var API_KEY = "api key";
    var roomId  = "room id";
    var ism = new Ismuser(API_KEY, roomId);
    ism.init({
      board: {
        layer: "board"
      },
      video: {
        camsContainer: "guest"
      },
      chat: {
        layer: "chat"
      },
      moderator: true,
    });
  }
</script>
<script src="http://assets.ismuser.com/v0.4/js/ismuser.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

该片段无法按预期工作(即使使用标准解决方案),最后我只想在此页面中禁用Turbolinks.

我该怎么做?

- 解决方案

<% content_for :body do %>
    <% if controller.controller_name == 'home' && controller.action_name == …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ruby-on-rails turbolinks

44
推荐指数
4
解决办法
3万
查看次数

Rails 4 + Devise:无效的路由名称,已在使用中

我正在按照这个方法在注册成功后修改确认页面.

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration)

我做的一切都像它说的但我得到这个错误:

in `add_route': Invalid route name, already in use: 'new_user_session'  (ArgumentError)
You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as explained here: 
http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
Run Code Online (Sandbox Code Playgroud)

我想wiki没有更新使用Devise with Rails 4,但我没有找到足够的信息来修复错误.

返回错误的行是next(routes.rb):

devise_for :users, :controllers => { :registrations => "registrations" }
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

谢谢.

编辑 -

registrations_controller.rb

class RegistrationsController < …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise

24
推荐指数
1
解决办法
2万
查看次数

Django视图不存在或无法导入

今天早上我一直在研究我的项目.我完成了我正在做的事情,我将新代码推送到git.

现在,我去运行我的项目开始工作,索引视图不运行!

Could not import ism.views.index. View does not exist in module ism.views.
Run Code Online (Sandbox Code Playgroud)

这个视图没有任何问题.所有的项目都运行了.

有更令人难以置信的事情.我在主视图(ism.views.index)失败后尝试并检查了其他视图,但所有这些视图都有效,但现在不行!10秒前所有视图都正确运行,现在都无法正常工作.他们吐出与主视图相同的错误.

我发现在互联网上搜索这个相关主题:

对于django而言,这种观点并不存在,但是它之前有5个secondes并且它仍然存在

但我试图删除原始文件(ism应用程序中的views.py)并再次写入,问题仍然存在.所有其余的views.py都一样.

有人知道这个问题吗?

谢谢=)

python django import view

23
推荐指数
2
解决办法
2万
查看次数

Django i18n不起作用

我正在尝试为我的项目激活不同的语言.现在英语和西班牙语.

我将描述我遵循的所有步骤:

首先,我把自己放在我要翻译的目录中.或者更好地说,所有{%trans%}标签都是:

$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
Run Code Online (Sandbox Code Playgroud)

上一个命令创建目录/ file /locale/en/LC_MESSAGES/django.po

我打开django.po,然后继续用英语填写所有msgstr字段.msgstr标签是西班牙语.我尊重有关长消息案例的提示.填写此文件后,我做:

$ django-admin.py compilemessages
Run Code Online (Sandbox Code Playgroud)

这个过程django.po并创建django.mo.

所以我修改了settings.py.重要内容:

TEMPLATE_CONTEXT_PROCESSORS = (
    'ism.context_processor.user_vars',
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.request',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'pipeline.middleware.MinifyHTMLMiddleware',
}

TIME_ZONE = 'Atlantic/Canary'

LANGUAGE_CODE = 'es'

USE_I18N = True

_ = lambda s: s

LANGUAGES = (
    ('es', _('Espanol')),
    ('en', _('English')),
)

USE_L10N = True

USE_TZ = True
Run Code Online (Sandbox Code Playgroud)

最后,我将此行添加到URLS.py:

(r'^i18n/', include('django.conf.urls.i18n')),
Run Code Online (Sandbox Code Playgroud)

我重新启动我的开发服务器,我配置我的Firefox浏览器首先选择英语作为主要语言,它不起作用.所有文本仍以西班牙文显示,而不是英文.

我确保Firefox配置为英文,因为在Django视图函数(呈现.html)中我使用request.LANGUAGE_CODE进行打印,打印"en".

我弄错了什么?

django locale internationalization

7
推荐指数
1
解决办法
8197
查看次数

在AngularJS中始终滚动到顶部

我正在使用AngularJS(MEAN.io堆栈),并且我遇到了与滚动相关的烦人故障.

当用户单击链接时,目标页面采用与原始页面相同的滚动位置,而不是保持在最顶层.

为了解决这种奇怪的行为,我使用了下一个:

$rootScope.$on("$viewContentLoaded", function () {
  $anchorScroll();
});
Run Code Online (Sandbox Code Playgroud)

但是这段代码使得每一页都在顶部位置上滚动,这也很烦人,因为用户必须能够返回并恢复之前的滚动位置.

有什么建议吗?我怎样才能得到理想的结果?

谢谢!

编辑--------------------

当我尝试使用ng-view + autoscroll解决方案时,它对我不起作用,我不知道为什么.

这是我在我的default.html页面中使用它的方式,该页面由服务器提供:

<body ng-cloak class="ng-cloak" ng-class="{state: true, auth: authPage}" ng-controller="BodyController">

      <div ng-include="'/system/views/header.html'"></div>

    <section class="content">
      <div data-ng-include="'/ceh-admin/views/adminShortcuts.html'"></div>
      <div ng-view autoscroll="true">{% block content %}{% endblock %}</div>
    </section>

    <div data-ng-include="'/system/views/footer.html'"></div>

    {% include '../includes/foot.html' %}

  </body>
Run Code Online (Sandbox Code Playgroud)

我的HTML代码有些奇怪吗?

javascript css jquery angularjs mean.io

6
推荐指数
1
解决办法
1451
查看次数

如何在 Javascript API 中完成安全身份验证

我们正在尝试为我们的服务开发一个 API,但我们对如何完成身份验证过程感到怀疑。我们的客户端必须能够包含与我们的 Node.js 服务器连接的 .js 文件。这里的关键点是我们的后端必须跟踪 API 的使用情况,以便我们的客户将根据其使用情况付费。

我们的目的是为用户设计尽可能简单的 API,并确保其安全。我们想过:

  • 为每个用户创建一个 API_KEY 并将其与每个请求中的域相匹配。这里的问题可能是域名不是最安全的选择,不是吗?我们知道该域可能会在 HTTP 请求中被替换。

  • 使用具有 API_KEY 和 SECRET_KEY 的 SDK 为给定会话和用户生成令牌。我一点也不讨厌这个选项,但我们更喜欢为开发人员提供一个更简单的解决方案,这并不意味着使用多个 API。

你有什么想法/建议/考虑/什么吗?

提前致谢。

javascript security authentication api authorization

5
推荐指数
1
解决办法
2589
查看次数

服务器端事件 (SSE) 未到达客户端

我正在使用 MEAN 并且我正在尝试从服务器端接收事件。为此,我使用 EventSource 但它不起作用。

我看到连接是如何打开的,但我没有从服务器收到任何消息。我可以在 Node 控制台中看到消息是如何发送的,但在客户端什么都没有(浏览器控制台)。

当我遵循我找到的所有教程时,我有点迷茫,但是使用完全相同的代码它不起作用。

在客户端,这是我的 AngularJS 代码:

  var source = new EventSource('/api/payments/listen');

  source.addEventListener('open', function(e) {
    console.log('CONNECTION ESTABLISHED');
  }, false);

  source.addEventListener('message', function (e) {

    $scope.$apply(function () {
      console.log('NOTIFICATION');
      console.log(e.data);
    });

  }, false);

  source.onmessage = function (e) {
    console.log('NOTIFICATION!');
    console.log(e);
  };

  source.addEventListener('error', function(e) {
    if (e.readyState === EventSource.CLOSED) {
      console.log('CONNECTION CLOSED');
    }
  }, false);
Run Code Online (Sandbox Code Playgroud)

服务器端代码:

exports.listen = function (req, res) {

  if (req.headers.accept && req.headers.accept === 'text/event-stream') {

    if ( req.url === '/api/payments/listen' ) {
      sendSSE(req, res); …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express server-sent-events angularjs

5
推荐指数
1
解决办法
3451
查看次数

jQuery.Click方法重新加载页面

我正在尝试创建一个浮动div,它会在按钮被触发时显示出来.这并不难,但是当我按下按钮时,页面会自动重新加载.我不知道为什么.

我试图使用Bootstrap的Popover,但由于同样的问题它没有按预期工作.当弹出窗口被触发时,页面重新加载并且弹出窗口明显消失.

我正在使用RoR,只是说如果找出问题会有用.

我在文档的底部有这样的东西:

<a href="#" class="btn btn-small btn-warning" id="example">Show</a>

<script type="text/javascript">
    $(document).ready(function() {
        console.log("Page is loaded.");

        // Custom Popover
        $("#example").click(function() {
            console.log("Showing");
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

console.log页面加载时会显示第一个内部就绪功能.当我触发"显示"按钮时,console.log再次显示在浏览器的控制台中.这没有任何意义.

谢谢!

javascript jquery ruby-on-rails twitter-bootstrap

4
推荐指数
1
解决办法
1万
查看次数

Django管理静态文件在https下提供

最近我将我的Django项目配置为与Amazon S3配合使用.除了/ admin /之外,一切正常.我在控制面板中看不到任何.css或图像.当我从浏览器检查代码时,我可以看到打印的静态文件网址类似于"https:// blablabla".

从https协议我必须同意一个证书来显示请求的对象,所以在/ admin /任何这些文件都无法显示.如果我输入相同的URL但在http下我可以看到该文件而不同意任何内容.

我怎样才能/管理/调用http下的静态文件而不是https下的静态文件?

谢谢!

django static admin file amazon-s3

3
推荐指数
1
解决办法
1383
查看次数

将 Base64 编码的图像上传到 Node.js 服务器不起作用

我正在使用 MEAN.io,并且正在尝试上传 Base64 编码的图像。

客户端,AngularJS:

          // Image we're going to send it out
          var base64Image = files[i];

          var file = {
            image: base64Image,
            type: type,
            filetype: extension,
            characterId: character._id
          };

          var newFile = new MediaSendBase64(file);

          newFile.$save(function(image) {
            if ( !image ) {
              console.log('ERROR IMAGE');
            }
            else {
              console.log('SUCCESS.');

              console.log(image);
            }
          });
Run Code Online (Sandbox Code Playgroud)

服务器端、NodeJS、控制器:

app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

exports.uploadBase64 = function(req, res, next) {

  var uploadPath  = path.normalize(process.cwd() + '/packages/characters/public/assets/uploads/'),
      data        = new Buffer(''),
      imgURL      = undefined,        // public URL …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express angularjs mean-stack

2
推荐指数
1
解决办法
3万
查看次数