小编Ped*_*nto的帖子

仅在root_path上登录后才重定向用户

我有一个root_path不受用户保护的Rails应用程序,即它是一个简单的门户主页,带有登录表单.

用户登录后,我希望它能够访问dashboard_path.

我这样做了:

def signed_in_root_path(scope_or_resource)
  dashboard_path
end
Run Code Online (Sandbox Code Playgroud)

这显然应该在用户root_path登录时使用,并且我不希望它进入,同时仍然保持用户返回到前一页,如果它试图击中受限区域并且它要么超时要么没有记录在.

即:

restricted_pa​​ge - > login - > restricted_pa​​ge_but_logged_in

我不想改变这种行为,这就是我没有使用过的原因after_sign_in_path,但是如果它打开了,或者想要重定向它root_path,或者任何不需要用户身份验证的路由.

我的问题是这不起作用.登录后,我将被重定向回来root_path,我相信这是因为after_sign_in_path之前被触发了.

有没有办法做到这一点?谢谢!

编辑:这是我第二次登录时工作,即我去root_path,登录,获取闪存消息,说明我已登录,并在表单上再次输入用户名和密码root_path.我成功地被重定向到了dashboard_path.不过,不是我想要的行为.

ruby ruby-on-rails devise ruby-on-rails-3.1

10
推荐指数
1
解决办法
8005
查看次数

如何从webpack生成的NPM包中正确加载资源?

我正在使用webpack为npm包生成适当的文件,这将包含一些反应组件.他们附加了一些CSS,引用了一些字体和图标.

使用file加载程序时,这些资产会使用fonts/my-font.woff主应用程序中缺少的绝对路径(即)进行错误引用.

有没有办法解决这个问题,让我的主应用程序寻找合适的文件?我宁愿修复软件包本身而不是像有人提到的那样复制资产,因为我可能无法完全控制主应用程序.

css npm reactjs webpack webpack-file-loader

10
推荐指数
1
解决办法
986
查看次数

访问请求规范中的请求对象

如何在请求规范上执行请求之前设置请求标头?

我正在移动控制器规范,以使用Rails在我的API上请求规范.我坚持的一件事是我无法访问request允许请求的对象.

在我的控制器规格上,我可以访问我创建的方法,该方法对特定用户进行签名:

def sign_in(user)
  token = user.api_keys.first.token
  # note the request object being used in the next line
  request.env["HTTP_AUTHORIZATION"] = ActionController::HttpAuthentication::Token.encode_credentials(token)
end
Run Code Online (Sandbox Code Playgroud)

这在控制器规格上工作正常,我可以安全地做到:

before { sign_in(user) }
it { post :endpoint, params }
Run Code Online (Sandbox Code Playgroud)

但是根据请求规范,该request对象不可用.如果我尝试:

before { sign_in(user) }
it { post "/api/endpoint", params }
Run Code Online (Sandbox Code Playgroud)

我接受request了我的助手方法nil.

我知道我能做到:

it { post "/api/endpoint", {"HTTP_AUTHORIZATION" => ... } }
Run Code Online (Sandbox Code Playgroud)

但这在规范中看起来很混乱,特别是与控制器规格相比.

我已ActionDispatch::TestRequest::DEFAULT_ENV按照这个答案的建议尝试使用,但它也没有用(我得到了401).

ruby rspec ruby-on-rails rspec-rails ruby-on-rails-4

9
推荐指数
1
解决办法
2311
查看次数

Facebook OpenGraph DateTime属性,仅将日期解析为DateTime

我遇到了Facebook的问题OpenGraph以及DateTime我在我的页面上设置的属性.

标签看起来像这样:

<meta content="2013-06-10" property="app:departing_on" />
Run Code Online (Sandbox Code Playgroud)

标签DateTimeOpenGraph类型上正确设置.我用它来创造一个新的故事.当我模拟一个帖子时,它会改变时区以匹配我的(UTC-3),所以我得到2013年6月9日晚上9点.这是一个仅限日期的活动,所以我实际上没有时间展示,只是一个约会.

我可以强迫Facebook将其解析为约会吗?

facebook opengraph facebook-opengraph

8
推荐指数
1
解决办法
1620
查看次数

在 Ruby 中的私有/公共/受保护方法之后使 vim 缩进

我的团队已同意遵循有关私有/公共/受保护方法缩进的 Rails 公约指南。这是:http : //edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions

但是我还没有找到任何关于如何让 vim-ruby 以这种方式工作的信息。我怎样才能做到这一点?

谢谢!

ruby vim ruby-on-rails

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

如何在不进行切换的情况下计算正确的数字?

我需要一种算法来根据数组长度计算偏移量.我已手动获取每个号码的号码,但如果可能的话,不做案例/开关.

给定一个数组长度x,我需要提出计算这个的东西:

20 if x == 5
25 if x == 4
35 if x == 3
50 if x == 2
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?我必须在这里使用开关吗?

javascript algorithm

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

计算C中给定范围内的3的幂

我必须编写一个程序,它接受两个正整数,startend,其中(1 < start < end).然后程序将在此范围内[ 开始,结束 ]并计算3的幂数.

因此,例如,如果start为2且end为10,则输出为2.(3和9为3的幂).

以下是我的代码:

#include <stdio.h>
#include <math.h>

int main(void) {

    int start, end, i, count = 0;

    printf("Enter start and end: ");
    scanf("%d %d", &start, &end);

    for (i = start; i <= end; i++) {
        if ((log(i) / log(3)) == floor((log(i) / log(3)))) {
            printf("%d\n", i);
            count++;
        }
    }
    printf("Answer = %d\n", count);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行其中一个测试用例[3,1000]时,输出为5,当它应为6时.

3
9
27
81
729
Answer …
Run Code Online (Sandbox Code Playgroud)

c

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