小编r-s*_*r-s的帖子

未允许的参数将新字段添加到rails 4.0中的Devise

使用rails非常新.我使用Devise实现了一个基本的登录系统.我想在sign_up页面中添加几个新字段(bio:string,name:string).我有一切正确显示并且新字段被添加到数据库中(当我在SQLbrowser中查看时)但是,它们没有填充,并且在用户提交sign_up表单后,有一条消息,其中一部分说:

Unpermitted parameters: bio, name
Run Code Online (Sandbox Code Playgroud)

我已将2个字符串添加到_devise_create_users.rb中

  # added
  t.string :bio
  t.string :name
Run Code Online (Sandbox Code Playgroud)

我让它们出现在schema.rb中

ActiveRecord::Schema.define(version: 20130629002343) do

  create_table "users", force: true do |t|
    t.string   "email",                  default: "",    null: false
    t.string   "encrypted_password",     default: "",    null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "shortbio"
    t.boolean  "admin",                  default: false
    t.string   "realname"
    t.string   "name"
    t.string   "bio"
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true
  add_index "users", ["reset_password_token"], name: …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

std :: list resize给出了意想不到的结果

我只是在学习并且可能有一个愚蠢的问题.

我有2个容器,一个是矢量,一个是列表.它们都填充了1,2,3,4.初始化后,我将容器的大小调整为7,然后打印容器的内容.

#include <iostream>     
#include <vector>     
#include <list>

int main () 
{
std::list<int> lst= {1,2,3,4};
std::vector<int> vec = {1,2,3,4};

lst.resize(7);
vec.resize(7);

for (auto p = lst.begin(); p!=lst.end(); ++p)
  std::cout<<"List: "<<*p<<std::endl;

for (auto p = vec.begin(); p!=vec.end(); ++p)
  std::cout<<"Vector: "<<*p<<std::endl;

return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我得到的输出中:

List: 1
List: 2
List: 3
List: 4
List: 0
List: 1994995248
List: 0
Vector: 1
Vector: 2
Vector: 3
Vector: 4
Vector: 0
Vector: 0
Vector: 0
Run Code Online (Sandbox Code Playgroud)

我是否必须明确告诉列表我正在添加0以避免这种情况?

c++

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

将STL算法传递给另一个函数

我有一个用户定义类型(学生)的向量.我有2个函数几乎相同,除了它们内部的单个函数调用.

这是2个功能:

Student lowest_grade(const std::vector<Student> &all_students){
  return *std::min_element(std::begin(all_students), std::end(all_students),
      [](const Student &a, const Student &b){
    return a.get_average() < b.get_average();});
}

Student highest_grade(const std::vector<Student> &all_students){
  return *std::max_element(std::begin(all_students), std::end(all_students),
      [](const Student &a, const Student &b){
    return a.get_average() < b.get_average();});
}
Run Code Online (Sandbox Code Playgroud)

这两个函数都可以正常使用,但似乎可以很容易地构建它.我想创建一个我可以传入min_element或max_element的函数,例如:

template <typename func>
Student dispatch(const std::vector<Student> &all_students, func){
  return *func(std::begin(all_students), std::end(all_students),
      [](const Student &a, const Student &b){
    return a.get_average() < b.get_average();});
}
Run Code Online (Sandbox Code Playgroud)

但我无法让这个工作正常.我不知道该怎么做.

编辑 - 这是我调用调度函数+错误消息的方式:

std::cout<<"lowest: "<< dispatch(all_students, std::max_element);
Run Code Online (Sandbox Code Playgroud)

错误消息是:

g++ m.cpp -std=c++11 -Wall -o main
m.cpp: In function ‘int …
Run Code Online (Sandbox Code Playgroud)

c++ stl c++11

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

c ++ lambda删除偶数

我正在学习C++ lambda函数,这个可能很容易的问题就是给我一些问题.

我有一个带有一些整数的向量.我想删除所有偶数.

我目前已经删除了偶数,但是当我打印向量的内容时,我最后还是在向量中留下了一些重复的数据.

int main()
{
  std::vector<int> v1 = {0,1,1,2,3,5,8,13,21,55,89};

  for (const auto &i : v1) std::cout<< i << " ";
  std::cout<<std::endl; 

  v1.erase(std::remove_if(v1.begin(), v1.end(), [](int i)
       { return (i % 2) == 0; }));

  for (const auto &i : v1) std::cout<< i << " ";
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

0 1 1 2 3 5 8 13 21 55 89 
1 1 3 5 13 21 55 89 55 89
Run Code Online (Sandbox Code Playgroud)

我希望第二行的输出为:

1 1 3 5 13 21 55 89
Run Code Online (Sandbox Code Playgroud)

编辑

感谢大家.我使用了错误版本的擦除(现在觉得非常愚蠢).这是正确的代码: …

c++ lambda vector c++11

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

反转整数

我正在尝试编写一个函数,它接受一个输入数字并以相反的顺序输出数字.

即:

输入 - > 25输出 - > 52

输入 - > 125输出 - > 521

我是lisp的新手,如果它有用的话是c ++中的工作函数

function.cpp

int revs(int rev, int n)
{
  if (n <= 0)
    return rev;

  return revs((rev * 10) + (n % 10), n/10);
}
Run Code Online (Sandbox Code Playgroud)

我在Racket中写了如下:

(define (revs rev n)
  (if (<= n 0)
     rev
     (revs (+ (* rev 10) (modulo n 10)) (/ n 10))))
Run Code Online (Sandbox Code Playgroud)

但当我运行它(转速0 125)时,我收到此错误:

modulo: contract violation
  expected: integer?
  given: 25/2
  argument position: 1st
  other arguments...:
   10
Run Code Online (Sandbox Code Playgroud)

当然我在这里做错了,但我不确定我错过了什么.

scheme racket

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

C++鼠标点击窗口中的某个位置

我的功能在这里工作,但我肯定是错误的.

我的程序使用FindWindow来查找正确的窗口.我需要双击此窗口中的特定位置.

我通过始终将窗口放在屏幕上的相同位置来使其工作,但如果我移动窗口,程序将尝试单击我提供的硬编码位置,它将无法工作.

这是功能:

void lobbyWindow(HWND main_client)
{
  //RECT arect;

   // GetWindowRect(main_client, &arect); 

    SetCursorPos(748,294);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

}
Run Code Online (Sandbox Code Playgroud)

如您所见,我只需将鼠标移动到748,294并双击即可.我想要做的是在main_client窗口中将鼠标设置为100,100,所以如果我移动main_client窗口,鼠标仍然会点击正确的位置.

c c++ winapi

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

C++通用插入排序

我正在创建它以尝试更好地理解排序算法和通用函数.我已经实现了一个基本的插入排序算法,我试图使它适用于多个数据结构(至少列表和数组).

因为我可以访问这样的列表:list [N]来获取值,我想我需要使用迭代器.所以我试图转换我的解决方案.这是我试图修改的基本插入排序算法:

int *insertionsort(int *a)
{
  for (int i = 1; i<length(a); ++i)
  {
    int k = a[i];
    int j = i-1;
    {
      while (j>=0 && a[j] > k)
      { 
        a[j+1] = a[j--];
      }
    a[j+1] = k;
  }
  return a;
}
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止通用版本的内容:

template <class T>
T insertionsort(T a)
{
  for (auto i = a.begin()+1; i<a.end(); ++i)
  {
    auto k = i;
    auto j = i-1;
    while (j>=a.begin() && *j>*k)  
    {
      (j + 1) = j--; 
    }
    (j + 1) …
Run Code Online (Sandbox Code Playgroud)

c++ sorting generics algorithm

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

标签 统计

c++ ×5

c++11 ×2

algorithm ×1

c ×1

generics ×1

lambda ×1

racket ×1

ruby ×1

ruby-on-rails ×1

scheme ×1

sorting ×1

stl ×1

vector ×1

winapi ×1