所以在我的rails应用程序中,我有不同权限的用户.当有人登录时,一切都很完美.但是,当没有人登录时,我收到以下错误:
Undefined method 'editor?' for nil:NilClass
def require_editor
redirect_to '/error' unless current_user.editor? || current_user.admin?
end
Run Code Online (Sandbox Code Playgroud)
我想我明白为什么会发生这种情况:因为没有人登录,Rails正试图弄清楚他们有什么角色,并且因为没有人没有登录它的角色,Rails不知道它是否应该显示页面与否.
我的问题是:如何为未登录的人创建默认角色,并将其发送到错误页面,表明他们没有权限?
我想我从根本上误解了如何在我的rails应用程序中实现Javascript.我的理解是你将Javascript抛出到你的application.js文件中,然后你可以使用DOM来引用元素jQuery,以便创建一个交互式网页.
我刚检查了所有代码,看起来很干净(如果我错了,请在下面发布).我的想法是我可能把我的Javascript放在错误的地方,或者我在某个地方错过了依赖?我发现其他帖子对我来说几乎无益.如何将Javascript合并到我的应用程序中?
的application.js
function main() {
$('.answers-box').hide();
$('.qaa-box').on('click', function() {
$(this).next().slideToggle(400);
});
}
$(document).ready(main());
Run Code Online (Sandbox Code Playgroud)
page.html.erb
<div class="qaa-box">
<h4>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h4>
<p class="answers-box">
Lorem ipsum dolor sit amet, consectetur adipiscing elit
</p>
</div>
Run Code Online (Sandbox Code Playgroud) 所以我试图创建动态变量,然后再使用它们而不必输入全名.我制作的测试代码如下
players = [1, 2, 3, 4]
players.each |player|
instance_variable_set("@player_#{player}_hand", "foo")
instance_variable_set("@player_#{player}_value", "bar")
}
puts @player_1_hand # => foo
puts @player_3_value # => bar
players.each { |player|
puts "@player_#{player}_hand"
}
# => @player_1_hand
# => @player_2_hand
# => @player_3_hand
# => @player_4_hand
Run Code Online (Sandbox Code Playgroud)
我想动态地调用和/或更新这些变量,但是在初始化之后我不知道该怎么做.我发现的文档更令人困惑而不是有用.有人可以解释如何正确使用这些?