在Devise中自定义路由到新用户注册页面Simple_Form_For将新表单发布到设计注册控制器

时间:2014-03-23 01:04:22

标签: ruby-on-rails devise simple-form

一个想法 - 我应该制作一个继承注册控制器的新控制器吗?然后做另一个

devise_for :users, :controllers => {:registration => "newcontroller"}

将trial_signup.html.erb更改为new.html.erb

在app / views / devise / registrations2 / new.html.erb

中创建一个新文件夹

最新更新 应用程序/视图/色器件/ trial_signup.html.erb

<h2>Trial Sign up</h2>

<%= simple_form_for(resource, :as => resource_name, :url => sales_path(resource_name)) do |f| %>

  <div class="row">
    <div class="col-xs-6 col-md-6">
      <%= f.input :first_name, :autofocus => true, :input_html => { :class => "form-control" } %>
    </div>
    <div class="col-xs-6 col-md-6">
      <%= f.input :last_name, :input_html => { :class => "form-control" } %>
    </div>
  </div>
    <%= f.input :email, :required => true, :input_html => { :class => "form-control" } %>
    <%= f.input :password, :required => true, :input_html => { :class => "form-control" } %>
    <%= f.input :password_confirmation, :required => true, :input_html => { :class => "form-control" } %>    
  <%= f.button :submit,  class: "btn-lg btn-primary btn-block" %>
  <% end %>
</div>
  • 这会将我的trial_signup.html.erb呈现给销售人员,但是当我提交其查找user.sales并且没有创建用户时。

我有一个user.rb模型

has_many :trial_subscriptions
attr_accessible :trial_subscriptions_attributes
accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true 

我有一个trial_subscription.rb模型,它继承自manual_subscription.rb并且继承自subscription.rb

Subscription.rb模型

belongs_to :user

我的任务是创建一个trial_signup.html.erb来发布表单(创建用户及其相关的试用帐户)

我正在努力学习设计和simple_form_for。


在我的路线中

我有这个

devise_for :users, :controllers => {:registrations => "registrations"}

如果我去用户/ sign_up我正在渲染app / views / devise / registrations / new.html.erb

我在

中将new.html.erb的相同副本复制到trial_signup.html.erb
app/views/devise/registrations/trial_signup.html.erb

我将此添加到我的路线

  devise_scope :user do
    get "sales", to: "registrations#trial_signup"
  end

我可能误认为devise_scope的目的。我不完全理解这一部分。

我是否使用指向注册试用注册操作的用户模型获取销售页面?请注意,我希望trial_signup.html.erb在注册控制器中点击create方法(来自devise)。它是否在我的注册控制器中命中空的trial_signup操作?

我的形式是

<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  • 这会将我的trial_signup.html.erb呈现在销售状态,但不会发布

当我做rake路线时,我有这个

new_user_registration GET        /users/sign_up(.:format)                                registrations#new
sales GET        /sales(.:format)                                        registrations#trial_signup

**我没有registration_path?这是为了什么?

1 个答案:

答案 0 :(得分:0)

更新

<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>

使用

<%= simple_form_for(resource, :as => resource_name, :url => sales_path) do |f| %&GT;

执行rake routes并检查为get "sales"路由生成的路径(主要是user_sales_path:在前缀列下检查),将其作为url选项传递给表单。因此,在表单提交时,您的自定义RegistrationsController#trial_signup操作将被调用。