Rails 4.2.5 kullanıyorum. Ben aşağıdaki alanları içeren bir kullanıcı modeli: Ben ayrıca bu alanları düzenleme ile başa çıkmak için benim denetleyicisi (./app/controllers/users_controller.rb) bir yöntemine sahipYalnızca kullanıcı modeli alanları belirli değerler içeriyorsa, giriş yaptıktan sonra sayfaya nasıl yönlendiririm?
height_feet
height_inches
weight
...
def edit
@user = User.find(session["user_id"])
render 'edit'
end
Ancak, istediğim, bu alanların tümü boşsa, kullanıcı oturum açtığında, kullanıcının bu alanları düzenledikleri sayfaya yeniden yönlendirilmesini istiyorum. Bunu nasıl kuracağından emin değilim. Ben kimlik doğrulaması için üçüncü parti sağlayıcıları (örneğin, Google, Facebook) kullandıkları için benim config/routes.rb dosyasında ben
root 'pages#index'
get '/auth/:provider/callback', to: 'sessions#create'
var. Ne yapmak istediğimi barındırmak için başka ne yapmam gerektiğini bilmiyorum.
Düzenleme: Eğer varsa,
after_filter :verify_user_fields
def verify_user_fields
if current_user.present? && current_user.weight.blank? && current_user.height_feet.blank? && current_user.height_inches.blank?
redirect_to edit_user_path(current_user)
end
end
alternatif "./app/controllers/sessions_controller.rb" dosyası için kod ...
class SessionsController < ApplicationController
def create
begin
@user = User.from_omniauth(request.env['omniauth.auth'])
session[:user_id] = @user.id
flash[:success] = "Welcome, #{@user.name}!"
end
redirect_to url_for(:controller => 'user_objects', :action => 'index')
end
def destroy
if current_user
session.delete(:user_id)
flash[:success] = 'See you!'
end
redirect_to root_path
end
end
Ne kontrolör/yöntem ben bu koyuyorum Rails kullanmak iyi bir fırsattır? – Dave
İşlenmesi gereken birkaç yol var, ancak uygulama denetleyicisindeki bir yönteme koyarım ve sonra yöntemi before_filter aracılığıyla çağırırdım. Bunu daha iyi göstermek için cevabımı güncelleyeceğim. – toddmetheny
Teşekkürler, benim quesiton düzenledim çünkü ben kullanıcı hemen giriş yaptıktan sonra ve sadece bu alanlar boşsa, düzenleme sayfasını görmesini istiyorum bahsetmeyi ihmal ettim. Giriş yaptıktan sonra bu sayfaya gitmek için yönlendirmeyi nasıl bağlarım? – Dave