2014-09-12 37 views
0

路線我希望我的用戶能夠直來直去的路徑訂閱/登陸他們的編輯用戶/更新帳號頁面後新。任何人都可以幫助我,我會如何去做這件事。我在下面列出改變設計後編輯用戶頁面

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 

    before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :email, :password) } 
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:name, :line1, :line2, :town, :county, :postcode, :password, :password_confrimation, :current_password)} 
    end 

private 
    def after_sign_in_path_for(resource) 
    edit_user_registration_path(current_user) #basically whichever path you think meets your needs 
    end 

routes.rb文件

Rails.application.routes.draw do 

    resources :subscriptions, only: [:new, :create, :show, :destroy] 
    #gives standard routes 

    get 'content/fruit' 

    get 'content/veg' 

    get 'content/mix' 

    devise_for :admin_users, ActiveAdmin::Devise.config 
    ActiveAdmin.routes(self) 
    namespace :admin do 
    get 'dashboard/index' 
    end 

    devise_for :users, :controllers => {:registrations => 'devise/registrations'} 
    # devise_for :users 
    resources :products do 
    resources :orders, only: [:new, :create] 
    #tells rails needs product id number 
    end 

    # get 'pages/payment' 

    get 'home/about' 

    get 'home/contact' 

    get 'seller' => "products#seller" 

    get 'sales' => "orders#sales" 

    get 'static_pages/productlanding' 

    get "content/veg" 

    get "content/fruit" 

    get "content/mix" 

    get 'subscriptions/new' 

制定登記控制器

class Devise::RegistrationsController < DeviseController 

    def update 
    set_flash_message :notice, :"message here" if is_flashing_format? 
    session[:user_return_to] = new_subscription_path 
    super 
    end 
end 

編輯形式的用戶

<h2>Edit <%= resource_name.to_s.humanize %></h2> 

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 
    <%= devise_error_messages! %> 


    <div class="form-group"> 
    <%= f.label :avatar, class: 'col-sm-2 control-label' %> 
    <div class="col-sm-6"> 
     <%= f.file_field :avatar %> 
    </div> 
    </div> 

    <div class="form-group"> 
    <%= f.label :name %> 
    <%= f.text_field :name, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :email %> 
    <%= f.email_field :email, class: "form-control" %> 
    </div> 

    <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> 
    <div class="form-group"> 
     Currently waiting confirmation for: <%= resource.unconfirmed_email %> 
    </div> 
    <% end %> 

    <div class="form-group"> 
    <%= f.label :password %> <i>(leave blank if you don't want to change it)</i> 
    <%= f.password_field :password, autocomplete: "off", class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :password_confirmation %> 
    <%= f.password_field :password_confirmation, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i> 
    <%= f.password_field :current_password, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :line1 %> 
    <%= f.text_field :line1, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :line2 %> 
    <%= f.text_field :line2, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :town %> 
    <%= f.text_field :town, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :county %> 
    <%= f.text_field :county, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :postcode %> 
    <%= f.text_field :postcode, autofocus: true, class: "form-control" %> 
    </div> 

    <div class="form-group"> 
    <%= f.label :organization %> 
    <%= f.text_field :organization, autofocus: true, class: "form-control" %> 
    </div> 


    <div class="form-group"> 
    <%= f.submit "Update", class: "btn btn-primary" %> 
    </div> 
<% end %> 

<h3>Cancel my account</h3> 

<p>Unhappy? <%= button_to "cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete, class: "btn btn-danger" %></p> 

<%= link_to "Back", :back %> 
+0

你在你的方法的'update'後面寫了'redirect_to ...._ path' – Nithin 2014-09-12 10:12:40

+0

當你提到「直接從編輯/更新」時,你是什麼意思?在執行完*動作後你想重定向*還是改變路由本身? – 2014-09-12 10:12:49

+0

是的,我的意思是執行操作後重定向。對不起很新的軌道.. – Lilp 2014-09-12 10:22:58

回答

1

您可以在此方法改變路徑after_update_path_for(resource)

class Devise::RegistrationsController < DeviseController 

    ## other devise stuff 

    protected 

    def after_update_path_for(resource) 
    new_subscription_path 
    end 

end 

如果您有多個色器件模型,你可以試試這個

class Devise::RegistrationsController < DeviseController 

    ## other devise stuff 

    protected 

    def after_update_path_for(resource) 
    if resource.is_a?(DeviseModel1) 
    new_subscription_path 
    else 
    other_path 
    end 
    end 

end 

或者你可以把它們放到application_controller.rb

+0

我試過第一個建議,因爲沒有多個設計模型,但它仍然重新導向到主頁? – Lilp 2014-09-12 13:57:14

1

你需要重寫UPD我的路線爲此設計了設計註冊控制器的行爲。

class Devise::RegistrationsController < DeviseController 

    def update 
    set_flash_message :notice, :"message here" if is_flashing_format? 
    session[:user_return_to] = new_subscription_path 
    super 
    end 
end 

在你的路線:

devise_for :users, :controllers => {:registrations => 'devise/registrations'} 

還應該有一個控制器app/controllers/devise/registrations。以上控制器代碼。

如果你想自定義消息則來自config/locales/en.yml

en: 
    devise: 
    registrations: 
     destroyed: "my custom message." 
     updated: "my custom message" 
+0

我如何生成設計註冊控制器?我根本沒有。一切都在我的應用程序控制器中設計相關 – Lilp 2014-09-12 12:23:11

+0

您可以直接添加到您的應用程序。在路上,我指定 – 2014-09-12 12:29:49

+0

感謝我這樣做如上,但用戶後,他們的編輯個人資料頁上點擊更新它仍然路線回到主頁? – Lilp 2014-09-12 13:00:14