小编mjs*_*rtz的帖子

使用Devise测试成功登录

我正在尝试通过Michael Hartl的RoR教程,但这是我第三次通过这个东西,现在我正在尝试在教程中实现Devise而不是home roll认证.可以想象,这有点痛苦,主要是由于RoR教程中的测试驱动开发与Devise不能很好地混合.我目前挂断的是,我似乎无法成功测试成功登录.我有关于localhost的网站,所以我知道登录有效,但我的测试仍然因某些原因而失败.这是集成测试代码段

def setup
  @user = users(:michael)
end

...

test "login with valid information" do
  get user_session_path
  assert_equal 200, status
  post user_session_path, 'user[email]' => @user.email, 'user[password]' => "password" 
  follow_redirect!
  assert_equal 200, status
  assert_select "a[href=?]", user_session_path, count: 0 # THIS LINE FAILS
  assert_select "a[href=?]", destroy_user_session_path
  assert_select "a[href=?]", user_path(@user)
end
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

FAIL["test_login_with_valid_information", UsersLoginTest, 2016-06-19 11:06:18 -0400]
test_login_with_valid_information#UsersLoginTest (1466348778.61s)
      Expected exactly 0 elements matching "a[href="/users/sign_in"]", found 1..
      Expected: 0
        Actual: 1
Run Code Online (Sandbox Code Playgroud)

顶部的登录栏切换Sign inAccount,所以看起来测试没有让设置块中的用户成功登录.另一个可能不相关的问题是,在我的另一个测试中,我尝试相同的确切登录方法,post user_session_path...然后检查是否current_user为空 …

ruby-on-rails devise

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

C中的自由特定类型的内存分配

我发现了一种在C语言中分配矩阵的有趣方法,它可以在[i][j]不初始化的情况下使用double matrix_a[nrows][ncols].分配是

double (*matrix_a)[ncols] = (double (*)[ncols])malloc(sizeof(double) * (nrows) * (ncols));
Run Code Online (Sandbox Code Playgroud)

但我找不到如何正确地释放这种类型的分配.会这么简单free(matrix_a)吗?

c malloc free

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

if if len(list)在Python中

我正在将Python代码翻译成C,以便利用HPC系统上可用的并行性(这是一个痛苦的过程)而且我遇到了Python中的条件,原来的程序员使用它让我感到困惑

   if rnum <> current_res:
      alim = 0
      if len(f): alim = f[-1]
Run Code Online (Sandbox Code Playgroud)

如果len(f)满足怎么办?我无法在网上找到以这种方式使用的这种约定.我想这是一个糟糕的编程习惯.

任何帮助将非常感激!

python

2
推荐指数
3
解决办法
2万
查看次数

C中的工作分配算法(做问题)

所以我正在开发一种算法来在线程之间均匀分配工作,但它有点独特.正在进行的工作是文件比较,其中我们有一个文件列表(比方说10个文件).我们不希望将文件1与文件1进行比较,因此每个文件都会跳过比较自身.文件1将自己与文件2到10进行比较,文件2将自己与文件3到10等进行比较.因此,当我们向下移动文件比较列表时,文件数比较下降.这是我遇到问题的小片段(特别是do-while循环)

// Get first pass file chunks
printf("Split approximation: ");
for (int i = 0; i < num_threads; i++)
{
    file_chunks[i] = (int)floor((double)num_file_compares / (double)num_threads);
    printf("%d ", file_chunks[i]);
}
printf("\n");

// Adjust file chunks to contain all files
for (int i = 0; i < num_threads; i++)
{
    file_chunk_sum = file_chunk_sum + file_chunks[i];
}
append_count = num_file_compares - file_chunk_sum;
printf("Need to append last %d\n", append_count);

append_index = num_threads;
do
{
    printf("im in the do while...\n");
    printf("append count is: %d\n", append_count); …
Run Code Online (Sandbox Code Playgroud)

c algorithm do-while

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

Rails代码中没有路由匹配

这段代码全部基于Michael Hartl的Ruby on Rails教程.我创建了一个assigned在我的动作users_controller

def assign
  puts "in assign..."
  @scout = User.find(params[:follower_id])
  @der   = User.find(params[:followed_id])
end
Run Code Online (Sandbox Code Playgroud)

我意识到这目前没有做任何事情,但在_follow部分方面,我有

<%= form_for @user, url: { action: "assign" } do |f| %>
  <div><%= hidden_field_tag :follower_id, @user.id %></div>
  <%= f.label :followed_id, "Assign #{@user.name} to" %>
  <%= f.collection_select :following, @ders, :id, :name, prompt: true %>
  <%= f.submit "Assign", class: "btn btn-primary" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误No route matches {:action=>"assign", :controller=>"users", :id=>"4"}.我是rails的新手,所以这可能只是一个愚蠢的问题.我究竟做错了什么?我需要修改我的routes.rb文件吗?另外,如果我尝试过<%= form_for @user do |f| …

ruby ruby-on-rails form-for collection-select

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