是否可以根据当前 Controller / View 提供不同的提交按钮值?
所以有 2 个 View :
=# app/views/devise/sessions.new.html.haml
%h2 Sign in
= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|
= f.input :email
= f.input :password
= f.input :remember_me, as: :boolean
= f.button :submit
和
=# app/views/registrations/new.html.haml
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= devise_error_messages!
= f.input :first_name
= f.input :last_name
= f.input :email
= f.input :password
= f.input :password_confirmation
= f.button :submit
我想在第一个 View 中显示登录并在第二个 View 中显示注册而不更改 View 本身。
仅供引用,本地化 submit
按钮可以通过:
# config/locales/en.yml
en:
helpers:
submit:
user:
create: 'Sign up'
但不幸的是,我看不出如何区分上面的 View (或 Controller )来为提交按钮提供不同的消息。
所以问题是en.yml
文件应该如何实现?
最佳答案
I18n 提供了区分 Controller 的标准方式:
en:
users:
registrations:
new:
create: "Sign up"
sessions:
new:
create: "Sign in"
您的表格需要稍作改动( session 和注册也一样):
= f.button :submit, t('.create')
不幸的是,如果没有带有 simple_form 的小 t('.create')
,我找不到更简单的方法。
在创建之前查看那个 .
(点)。 Rails 将通过 Controller 名称限定 create
的范围。在我们的例子中,users/sessions_controller 变成了“users.sessions”,注册也是如此。
关于ruby-on-rails - 在 Rails 中本地化 "Sign in"和 "Sign up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9257866/