2013-10-01 53 views
0

hy,我有一个窗体来改变当前的语言。这是联想在users_controller这样的更新动作:rails redirect_to数据库更新后

<%= form_for current_user do |f| %> 
<%= f.select :locale, [['En', 'en'], ['Pt', 'pt']] %> 
<%= f.submit %> 
<% end %> 


class UsersController < ApplicationController 
def update 
    @user.update(user_params) 
    [email protected] 
    redirect_to root_path 
end 

def user_params 
    params.require(:user).permit(:locale) 
end 
end 

更新我不想redirect_to的root_path后,但我想redirect_to的:回来,但与区域设置参数设置与更新依据。 我不知道,你能帮我吗?

回答

0

试试这个:

class ApplicationController < ActionController::Base 

    before_filter :set_locale 

    private 

    def set_locale 
    I18n.locale = current_user ? current_user.locale : 'en' 
    end 
end 

那么你的更新动作就是:

def update 
    @user.update(user_params) 
    redirect_to :back 
end 
+0

不工作becouse redirect_to的:回是redirect_to的request.referrer相同。在request.referrer中,请求的链接是旧的区域参数。 Redirect_to:后退是好的,但我需要追加它新的区域设置参数。 – user1066183

+0

如果您希望您的用户在配置文件中设置其语言环境,我认为应该不需要发送语言环境参数。你可以更新你的问题,并显示重定向后如何使用此语言环境参数? – BroiSatse