Ruby on rails 无法呼叫";当前用户;在使用设计时
我目前正在开发一个Rails应用程序,该程序支持英语、日语和汉语-根据用户注册的站点,数据库将存储他们的语言(JP=0,EN=1,ZH=2)。对于基于各种操作(预订、更改帐户等)发送给用户的电子邮件,我想呼叫Ruby on rails 无法呼叫";当前用户;在使用设计时,ruby-on-rails,devise,Ruby On Rails,Devise,我目前正在开发一个Rails应用程序,该程序支持英语、日语和汉语-根据用户注册的站点,数据库将存储他们的语言(JP=0,EN=1,ZH=2)。对于基于各种操作(预订、更改帐户等)发送给用户的电子邮件,我想呼叫当前用户.language,并根据结果进行如下更改: def set_language if current_user.language = 1 I18n.locale = 'en' elsif current_user.language = 2
当前用户.language
,并根据结果进行如下更改:
def set_language
if current_user.language = 1
I18n.locale = 'en'
elsif current_user.language = 2
I18n.locale = 'zh'
else
I18n.locale = 'ja'
end
end
(注意:JP为默认值)
不幸的是,我总是收到以下错误消息:
未定义的局部变量或方法“当前用户”
我还没有找到解决办法
过去,安装了Desive后,我总是可以毫无疑问地称之为Desive——我现在正在进行一个项目,该项目是别人在不久前启动的,我不知道为什么它拒绝工作。请让我知道,如果我可以提供任何进一步的有用点
此外,我还检查了路由,并通过designe\u for:users
正确设置了designe。当前用户是仅用于控制器/视图的助手。您不能在其他地方使用它,例如您的ReservationMailer
。在您的情况下,若从控制器调用方法set\u language
,则可以传递当前值
将用户id设置为set\u语言
方法
def set_language(user_id)
current_user = User.find(user_id)
if current_user.language = 1
I18n.locale = 'en'
elsif current_user.language = 2
I18n.locale = 'zh'
else
I18n.locale = 'ja'
end
end
当前用户
是一种仅对视图和控制器可用的方法。如果要在邮件程序或模型中使用它,则必须显式地将其用作邮件程序方法的参数
在控制器创建方法中:
ReservationMailer.set_language(current_user).deliver
梅勒方法:
def set_language(user)
if user.language = 1
I18n.locale = 'en'
elsif user.language = 2
I18n.locale = 'zh'
else
I18n.locale = 'ja'
end
end
Mailer视图:
<table>
<tr>
<td>name</td>
<td><%= @user.firstname %><%= @user.firstname %></td>
</tr>
<tr>
<td>phone no.</td><td><%= @user.phone %></td>
</tr>
</table>
名称
电话号码。
你的用户类叫什么?它叫“user”其他Desive方法是否工作正常?如果你是说注册等,那么是的-一点问题都没有current_user
甚至似乎在其他地方使用,这让我很困惑。哦,哇,我觉得这很简单,但不敢相信我以前从来都不知道!谢谢:-)Thanh刚刚告诉了你答案,但你也是对的-这就是问题所在。谢谢:-)