如何生成设计宝石的注册控制器

时间:2016-07-20 09:10:50

标签: ruby-on-rails devise

我已经设置了Devise,我在user.rb文件中设置了以下代码

rails generate devise:controllers -c registrations

然后我尝试通过运行

生成注册控制器

public class MainActivity extends AppCompatActivity { private Handler handler; ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //without the Looper.getMainLooper should work too handler = new Handler(Looper.getMainLooper()); startProcessing(); } private void startProcessing() { progressDialog = ProgressDialog.show(this, "Loading", "Loading data"); t.start(); } Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); log("a new client connected"); } catch (Exception e) { Log.e("TAG", e.getLocalizedMessage()); } } }); public void log(final String message) { handler.post(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); progressDialog.dismiss(); } }); } } xml can be as simple as: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </RelativeLayout> //if the above code works for you then the problem is in some other place, but not the handler or UI thread.

以及其他一些变体,但它不会生成...在Devise中创建注册控制器的正确命令是什么?

3 个答案:

答案 0 :(得分:2)

只需手动创建控制器并使其继承自Devise。例如:

class Users::RegistrationsController < Devise::RegistrationsController
  # Override the action you want here.
end

此控制器应位于app / controllers / users / registrations_controller.rb

在你的路线中提及它。

devise_for :users, controllers: { registrations: "users/registrations" }

如果您只想通过命令生成它而不是需要从master分支添加设备gem,因为该生成器存在于该分支上。

gem 'devise', git: 'https://github.com/plataformatec/devise'

正如How to deep merge two multi-root tree structure made of array and hashes

所述

答案 1 :(得分:0)

您使用的命令有错字。它应该如下所示:

rails generate devise:controllers users -c=sessions

希望有帮助。

答案 2 :(得分:0)

要生成仅供用户使用的Devise注册控制器,

rails g devise:controllers users -c=registrations

o / p:

enter image description here

要生成供用户使用的所有设备控制器:

rails d devise:controllers users

o / p: enter image description here

现在开始实际使用您生成的设计控制器,根据生成的控制器Ex修改route.rb:

进行注册

  devise_for :users, controllers: {
      registrations: 'users/registrations'
  }

对于注册和会话,请执行以下操作:

  devise_for :users, controllers: {
      registrations: 'users/registrations',
      sessions: 'users/sessions'
  }