我有一个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_page - > login - > restricted_page_but_logged_in
我不想改变这种行为,这就是我没有使用过的原因after_sign_in_path
,但是如果它打开了,或者想要重定向它root_path
,或者任何不需要用户身份验证的路由.
我的问题是这不起作用.登录后,我将被重定向回来root_path
,我相信这是因为after_sign_in_path
之前被触发了.
有没有办法做到这一点?谢谢!
编辑:这是我第二次登录时工作,即我去root_path
,登录,获取闪存消息,说明我已登录,并在表单上再次输入用户名和密码root_path
.我成功地被重定向到了dashboard_path
.不过,不是我想要的行为.
我正在使用webpack为npm包生成适当的文件,这将包含一些反应组件.他们附加了一些CSS,引用了一些字体和图标.
使用file
加载程序时,这些资产会使用fonts/my-font.woff
主应用程序中缺少的绝对路径(即)进行错误引用.
有没有办法解决这个问题,让我的主应用程序寻找合适的文件?我宁愿修复软件包本身而不是像有人提到的那样复制资产,因为我可能无法完全控制主应用程序.
如何在请求规范上执行请求之前设置请求标头?
我正在移动控制器规范,以使用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
).
我遇到了Facebook的问题OpenGraph
以及DateTime
我在我的页面上设置的属性.
标签看起来像这样:
<meta content="2013-06-10" property="app:departing_on" />
Run Code Online (Sandbox Code Playgroud)
标签DateTime
在OpenGraph
类型上正确设置.我用它来创造一个新的故事.当我模拟一个帖子时,它会改变时区以匹配我的(UTC-3),所以我得到2013年6月9日晚上9点.这是一个仅限日期的活动,所以我实际上没有时间展示,只是一个约会.
我可以强迫Facebook将其解析为约会吗?
我的团队已同意遵循有关私有/公共/受保护方法缩进的 Rails 公约指南。这是:http : //edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html#follow-the-coding-conventions
但是我还没有找到任何关于如何让 vim-ruby 以这种方式工作的信息。我怎样才能做到这一点?
谢谢!
我需要一种算法来根据数组长度计算偏移量.我已手动获取每个号码的号码,但如果可能的话,不做案例/开关.
给定一个数组长度x
,我需要提出计算这个的东西:
20 if x == 5
25 if x == 4
35 if x == 3
50 if x == 2
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?我必须在这里使用开关吗?
我必须编写一个程序,它接受两个正整数,start和end,其中(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)