Спросите себя следующий вопрос: , почему Вы хотите сохранить номера кредитных карт во-первых ? Возможности состоят в том, что Вы не делаете. На самом деле, если Вы делаете , хранят их и умеют иметь один украденный, Вы могли бы смотреть на некоторую серьезную ответственность.
я записал приложение, которое действительно хранит номера кредитных карт (так как транзакции были обработаны офлайн). Вот хороший способ сделать это:
Это походит на большую работу, но никогда не записывая полный CC# нигде, Вы делаете ее чрезвычайно трудно для хакера для нахождения чего-либо значения на веб-сервере. Доверяйте мне, это стоит душевного спокойствия.
В Rails (по крайней мере версия 2.3.4) партиалы соблюдают те же настройки интернационализации, что и представления и шаблоны, поэтому вы могли бы поместить большие объемы текста в части, которые переведены, сохраняя при этом ваши особенности в исходном виде. Для меток и «меньшего» текста можно использовать метод перевода t (...), как вы предложили. Итак, чтобы запустить ваш конкретный пример:
# app/wizards/edit.html.erb
<% javascript_content_for :head do %>
$(function() {
$("#choices :radio").change(function() {
$(".choice-wizard").hide();
$("#" + $(this).val()).show();
});
});
<% end %>
<h1><%= title t(".title") %></h1>
<div class="widget">
<div class="entry form">
<h2><%= title t(".header_choices") %></h1>
<% form_tag "#", :id => "choices" do %>
<p>
<%= radio_button_tag :choice, "with" %>
<%= label_tag "choice_with", "..." %>
</p>
<p>
<%= radio_button_tag :choice, "without" %>
<%= label_tag "choice_without", "..." %>
</p>
<% end %>
<div id="with" class="choice-wizard" style="display: none;">
<!-- to be localized -->
<%= render :partial => 'dear_readers' %>
...
# app/views/wizards/_dear_readers.en.html.erb
<h3>A Title</h3>
...
# app/views/wizards/_dear_readers.sv.html.erb
<h3>Bork bork bork!</h3>
...
И так далее. Мои извинения Швеции.
Другая возможность пойти с моим комментарием ниже:
# app/views/wizards/edit.html.erb
<%= render :partial => 'dear_readers' %>
<% javascript_content_for :head do %>
$(function() {
$("#choices :radio").change(function() {
$(".choice-wizard").hide();
$("#" + $(this).val()).show();
});
});
<% end %>
<h1><%= title t(".title") %></h1>
<div class="widget">
<div class="entry form">
<h2><%= title t(".header_choices") %></h1>
<% form_tag "#", :id => "choices" do %>
<p>
<%= radio_button_tag :choice, "with" %>
<%= label_tag "choice_with", "..." %>
</p>
<p>
<%= radio_button_tag :choice, "without" %>
<%= label_tag "choice_without", "..." %>
</p>
<% end %>
<div id="with" class="choice-wizard" style="display: none;">
<!-- to be localized -->
<%= yield :paragraph_1 %>
<%= yield :paragraph_2 %>
...
# app/wizards/_dear_readers.en.html.erb
<% content_for :paragraph_1 %>
<h3>Title ...</h3>
<p>Content ... </p>
<% end %>
<% content_for :paragraph_2 %>
...
<% end %>
...
И так далее для каждого языка, который вы поддерживаете. Как я упоминал в комментарии, который вдохновил на это, описанный здесь подход выглядит так, будто мы подбираем решение одной проблемы - СУХИМ разделяемую разметку (в виде навигации по сайту, боковых панелей и т. Д.) В решение для другая проблема, большие объемы переведенного текста. Использование content_for
/ yield
в таком случае кажется немного нетрадиционным, но это может быть приемлемым решением вашей проблемы.