在我的一些控制器中,我有一个before_filter来检查用户是否已登录?用于CRUD操作.
application.rb中
def logged_in?
unless current_user
redirect_to root_path
end
end
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Run Code Online (Sandbox Code Playgroud)
但是现在我的功能测试失败了,因为它重定向到root.所以我需要一种方法来模拟会话已经创建,但我尝试过的任何东西都没有.这是我现在所拥有的,测试几乎忽略了它:
test_helper.rb中
class ActionController::TestCase
setup :activate_authlogic
end
Run Code Online (Sandbox Code Playgroud)
posts_controller_test.rb
class PostsControllerTest < ActionController::TestCase
setup do
UserSession.create(:username => "dmix", :password => "12345")
end
test "should get new" do
get :new
assert_response :success
end
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我正在尝试创建一个旋转木马效果,每3秒自动循环一次.
$(".headline_img").each(function(intIndex){
setTimeout($(this).show(),3000);
});
Run Code Online (Sandbox Code Playgroud)
超时延迟不起作用.
这将在dom加载后立即显示所有图像.这就像忽略了setTimeout函数一样.
我错过了什么?
注意:我用$(document).ready调用它,您认为这可能会影响它吗?
我的clojure noir应用程序在本地工作100%,连接到RedisToGo没问题.
问题是当我部署到Heroku(git push heroku master)时,我收到超时错误:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Run Code Online (Sandbox Code Playgroud)
完整日志在这里:https://gist.github.com/1842439
当我删除这个redis连接代码时,它部署正常:
(:use [aleph.redis :only (redis-client)])
(def r (redis-client {:host redis-url :password redis-pass :port redis-port}))
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我运行"heroku run lein run repl"并粘贴上面的aleph代码时,它连接到redis并且我可以读/写数据.
所以它是关于heroku如何启动应用程序的东西,它打破了与RedisToGo的连接并将其计时.
我需要从HTML页面的某个部分检索一些原始HTML.
我编写了刮刀并抓取了相应的div,但它返回了一个标签贴图.
(:use [net.cgrand.enlive-html :as html])
(defn fetch-url [url]
(html/html-resource (java.net.URL. url)))
(defn parse-test []
(let [url "http://www.ncbi.nlm.nih.gov/pubmedhealth/PMH0000928/"
url-data (fetch-url url)
id "a693025"]
(first (html/select url-data [(keyword (str "#" id "-why"))]))))
Run Code Online (Sandbox Code Playgroud)
这输出:
{:tag :div, :attrs {:class "section", :id "a693025-why"}, :content ({:tag :h2, :attrs nil, :content ({:tag :span, :attrs {:class "title"}, :content ("Why is this medication prescribed?")})} {:tag :p, :attrs nil, :content ("Zolpidem is used to treat insomnia (difficulty falling asleep or staying asleep). Zolpidem belongs to a class …Run Code Online (Sandbox Code Playgroud) 我正在osx上的emacs中运行bash,然后从另一个地方运行来自terminal.app的拉宝石
在bash中:
which gem
/usr/bin/gem
Run Code Online (Sandbox Code Playgroud)
在终端:
which gem
/opt/local/bin/gem
Run Code Online (Sandbox Code Playgroud)
如何更改bash以匹配终端?
在一种形式中,我正在创建一个区域并编辑多个用户.下面的"user_attributes"用于用户,"name"用于区域.因此,对于每个user_attribute,我想更新用户模型.
{ "territory"=>{"name"=>"Central Canada",
"user_attributes"=>[{"user_id"=>"30"},{"user_id"=>"30"}]}
}
Run Code Online (Sandbox Code Playgroud)
@territory = @current_account.territories.new[:territory]
params[:user_attributes].each do |item|
@user = User.find(item[:user_id])
@user.update_attribute(:territory_id, @territory.id)
end
Run Code Online (Sandbox Code Playgroud)
但是rails正在反击,params [:user_attributes]是零.但你可以从params看到它不是.我错过了什么?
我总是尝试尽可能使我的应用程序成为RESTful,但我最近开始研究一个复杂的项目,需要在我的控制器中使用多个附加方法.
我通常通过添加另一个:集合到路线来实现这一点,但它似乎是一种解决方法,在场景中我有5个.
是否有处理控制器中额外方法的最佳实践?它们通常是更新模型的简单形式.
我有一个ruby应用程序从字符串解析一堆URL:
@text = "a string with a url http://example.com"
@text.split.grep(/http[s]?:\/\/\w/)
@text[0] = "http://example.com"
Run Code Online (Sandbox Code Playgroud)
这很好用^^
但有时URL在HTTP://之前有文本
@text = "What's a spacebar? ...http://example.com"
@text[0] = "...http://example.com"
Run Code Online (Sandbox Code Playgroud)
是否有正则表达式可以在字符串中选择"http://"之前的文本,以便我可以将其删除?
我试图使用这个代码块来替换一个不同数字的长字符串中的所有"123".
var new_id = new Date().getTime();
$('#food').after(
"<div id='123' name='123'> etc etc".replace('123', new_id)
);
Run Code Online (Sandbox Code Playgroud)
但它只是用new_id替换了前123个.有没有办法取代所有这些?
我有一长串的段落,我想将每个段落修剪为2行(50个字符),当您点击"更多"链接时,它将显示完整的段落.
我正在使用原型库和rails.
理想情况下我喜欢这样做,不要将段落分成2个div,当你点击更多时显示另一个.或者这是唯一的方法吗?