我的控制器中有以下代码:
format.json { render :json => {
:flashcard => @flashcard,
:lesson => @lesson,
:success => true
}
Run Code Online (Sandbox Code Playgroud)
在我的RSpec控制器测试中,我想验证某个场景确实收到了成功的json响应,所以我有以下行:
controller.should_receive(:render).with(hash_including(:success => true))
Run Code Online (Sandbox Code Playgroud)
虽然当我运行我的测试时,我收到以下错误:
Failure/Error: controller.should_receive(:render).with(hash_including(:success => false))
(#<AnnoController:0x00000002de0560>).render(hash_including(:success=>false))
expected: 1 time
received: 0 times
Run Code Online (Sandbox Code Playgroud)
我是否错误地检查了回复?
正如标题所描述的那样,我正在尝试将一个3x3单选按钮网格组合成一个单一的无线电组.在之前的一个问题中,我了解到,对于与单个组相对应的单选按钮,他们必须是他们将对应的无线电组的直接子项.当我试图在一个广播组中封装整个表格布局(在表行中使用单选按钮)时,我学到了很多.
跑进那堵墙,我尝试了以下几点:
<TableLayout android:id="@+id/table_radButtons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/title_radGroup_buffer">
<TableRow>
<RadioGroup android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/radGroup1">
<RadioButton android:id="@+id/rad1"
android:text="Button1"
android:layout_width="105px"
android:layout_height="wrap_content"
android:textSize="13px"></RadioButton>
<RadioButton android:id="@+id/rad2"
android:text="Button2"
android:layout_width="105px"
android:textSize="13px"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/rad3"
android:text="Button3"
android:layout_width="105px"
android:textSize="13px"
android:layout_height="wrap_content"></RadioButton>
</RadioGroup>
</TableRow>
<TableRow>
<RadioGroup android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/radGroup1">
<!-- snippet -->
</TableRow>
<!-- snippet --->
</TableLayout>
Run Code Online (Sandbox Code Playgroud)
显然我第一次没有学习,因为我再次遇到了一堵墙.我希望不同表行中的单选按钮会注意到它们是同一个无线电组的一部分(给每个组提供相同的ID),但这不起作用.
有没有什么方法可以将所有这些按钮分组到一个单独的无线电组中并仍然保持我的3x3结构(每行3行,3个单选按钮)?
在我的应用程序中,我使用Devise对用户进行身份验证,我注意到如果登录失败,您可以更改重定向到的页面.在维基上,我找到了以下示例:
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
Run Code Online (Sandbox Code Playgroud)
在这个例子之后,我创建了自己的CustomFailure类(custom_failure.rb)并放在帮助文件夹中(不知道放在哪里).这是我创建的以下课程:
class CustomFailure < Devise::FailureApp
def redirect_url
new_user_session_url(:subdomain => 'secure')
end
# Redirect to root_url
def respond
if http_auth?
http_auth
else
root_url
end
end
end
Run Code Online (Sandbox Code Playgroud)
我还在config/initializers/devise.rb文件中添加了以下内容(因为wiki状态应该完成):
config.warden do |manager|
manager.failure_app = CustomFailure
end
Run Code Online (Sandbox Code Playgroud)
虽然我没有收到任何错误,但是当我错误地登录它仍然会重定向到/ users/sign_in页面(不是根页面)并且没有加载任何内容(即使源不为空,页面也是完全白色的).我的CustomFailure类是否有问题,或者它是在错误的文件夹中?
我正在使用Rails 3.0.1和Devise 1.1.rc0.
找到此代码的Wiki位于:如何:当用户无法进行身份验证时,重定向到特定页面
我有多个单选按钮,我想使用表格进行布局,但也将它们包含在一个单独的无线电组中.我有以下xml布局:
<RadioGroup android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/Group1">
<TableLayout android:id="@+id/RadioButtons"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableRow>
<RadioButton android:id="@+id/rad1"
android:text="RButton1"
android:layout_width="105px"
android:layout_height="wrap_content"
android:textSize="13px"></RadioButton>
<RadioButton android:id="@+id/rad2"
android:text="RButton2"
android:layout_width="105px"
android:textSize="13px"
android:layout_height="wrap_content"></RadioButton>
<RadioButton android:id="@+id/rad3"
android:text="RButton3"
android:layout_width="105px"
android:textSize="13px"
android:layout_height="wrap_content"></RadioButton>
</TableRow>
</TableLayout>
</RadioGroup>
Run Code Online (Sandbox Code Playgroud)
但不幸的是,表格中的单选按钮似乎忽略了它们在RadioGroup标签内部的事实,因此您可以选择多个单选按钮.我注意到通过移除表格并只有单选按钮它可以正常工作.我怎么能克服这个?它会像在桌子内而不是外面宣布无线电组一样简单吗?谢谢你的帮助.
很抱歉这个含糊不清的标题,但我正在做以下操作,将一个简单的字符串写入文件:
try {
File root = Environment.getExternalStorageDirectory();
if (root.canWrite()){
System.out.println("Can write.");
File def_file = new File(root, "default.txt");
FileWriter fw = new FileWriter(def_file);
BufferedWriter out = new BufferedWriter(fw);
String defbuf = "default";
out.write(defbuf);
out.flush();
out.close();
}
else
System.out.println("Can't write.");
}catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但root.canWrite()似乎每次都会回归虚假.我没有在模拟器上运行它,我将我的android Eris通过USB插入我的计算机并通过Eclipse从我的手机上运行应用程序.有没有办法给我的应用程序权限,所以这不会发生?
此外,这段代码似乎是创建文件,default.txt但如果它已经存在,它会忽略创建并只是打开它来编写或者我必须捕获类似的东西FileAlreadyExists(如果存在这样的异常)然后只是打开它并写入?
谢谢你的帮助.
我正在创建一个简单的环境设置 cmd 脚本,我正在使用它doskey来设置各种别名和宏。我所在的环境有各种存储库,我想创建一些宏来快速导航流行目录。
我目前有以下几点:
@echo off
Setlocal EnableDelayedExpansion
set PROJECTS_PATH=%SystemDrive%\Projects
echo. Updating path...
REM Update PATH here
echo. Setting up macros...
doskey np="%SystemRoot%\System32\notepad.exe" $*
doskey np+="%ProgramFiles(x86)%\Notepad++\notepad++.exe" $*
doskey ..=cd ..
doskey trunk=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk ^& cd "!PROJECT_ROOT!"
doskey trunk2=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk2 ^& cd "!PROJECT_ROOT!"
doskey root=cd "%PROJECT_ROOT%"
doskey tools=cd "%PROJECT_ROOT%\tools"
Run Code Online (Sandbox Code Playgroud)
我希望发生的是我可以使用trunk宏来设置PROJECT_ROOT变量,然后使用延迟扩展导航到这个新设置的变量。然后,如果我使用该trunk2命令,它将再次重置PROJECT_ROOT变量并导航到该位置。最后,通过PROJECT_ROOT动态设置变量,无论我在哪个项目根目录下root,tools宏和宏都可以相同。
不幸的是,这不起作用,因为它似乎PROJECT_ROOT在创建宏时进行了评估。所以运行宏的结果trunk是变量被设置,然后执行cd "".
有什么办法可以让宏重新评估PROJECT_ROOT变量,以防它发生变化?
我遇到了以下问题,在感觉我已经用尽了对 Google 和 Stack Overflow 的各种研究途径之后,我决定就它提出我自己的问题。
我正在尝试根据我已经拥有并拥有的 CA 证书生成个人证书(使用 BouncyCastle)。生成证书后,将其放在“我的”存储中,然后我尝试更新我的 IIS 网站的 SSL 绑定以使用此新证书。
我注意到的是,对 IIS 网站(使用ServerManager)的更新没有抛出异常,但是当我转到 IIS 管理器控制台时,我注意到网站的绑定没有选择 SSL 证书。当我尝试选择我创建的证书时(显示为一个可行的选项),我收到以下错误消息:
A specified logon session does not exist. It may already have been terminated. (Exception from HRESULT: 0x80070520)
作为测试,我导出了生成的证书(使用私钥)并通过向导重新安装它,然后再次尝试设置绑定(通过 IIS 管理器),该绑定有效。
由于这种行为,我认为这是我如何生成证书或将证书添加到商店的问题。我希望有人可能对我遇到的问题有所了解。以下是用于创建证书、将其添加到商店以及以编程方式更新网站绑定的相关功能(我相信):
主要功能生成获取CA证书私钥,生成个人自签名证书,更新sites绑定:
public static bool GenerateServerCertificate(
X509Certificate2 CACert,
bool addToStore,
DateTime validUntil)
{
try
{
if (CACert.PrivateKey == null)
{
throw new CryptoException("Authority certificate has no private key");
}
var key = DotNetUtilities.GetKeyPair(CACert.PrivateKey).Private;
byte[] certHash = GenerateCertificateBasedOnCAPrivateKey( …Run Code Online (Sandbox Code Playgroud) 我正在创建一个涉及多个短声道剪辑的Android应用.目前,我正在使用SoundPool菜单活动开始第二次活动时加载我的声音片段.我似乎遇到的问题是,一旦这个辅助活动开始,声音片段的加载会导致多个堆大小溢出,然后在一点之后活动实际加载(模拟器从不给出错误或强制退出).MediaPlayer在这里使用帮助我并保持这些堆大小溢出?
此外,此时,菜单活动开始等待结果的第二个活动(使用该startActivityForResult()功能).这是否意味着菜单活动被保存在内存中以及将第二个活动加载到内存中?如果是这样,我可以通过finish()在第二个菜单活动启动后调用菜单活动来帮助解决我的内存问题(当用户希望返回菜单时重新启动菜单活动,或者这会引发一系列全新的问题吗?) ?
如何使用Devise对用户进行身份验证(如果没有密码,则只使用电子邮件),则可以在注册和登录时将密码设置为可选.虽然如果他们使用密码注册(或稍后更新),则应该要求登录.如何使用Devise实现这一目标?
注意:我正在使用Rails 3.0.1和Devise 1.1.rc0