我有一个带有textarea的简单表单,用户可以在其中键入(或复制'n'paste)json字符串.表单将被发送到我的控制器操作,我将验证json字符串,如果它没问题,我将创建一些记录,一切都很好.
要将表单发送到我的控制器操作,我现在使用Phoenix.HTML.Form "With connection data",因此我没有模型/变更集.
<%= form_for @conn, @action, [as: :match], fn f -> %>
<%= textarea f, :json, rows: 20 %>
<%#= error_tag @changeset, f, :json %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
如果json由于某种原因无效,我想再次渲染表单并显示错误消息.error_tag是一个视图辅助方法,如果有变更集,它将在字段中显示错误.因此,它现在被注释掉了.
def error_tag(form, field) do
if error = form.errors[field] do
content_tag :span, (humanize(field) <> " " <> translate_error(error)), class: "help-block"
end
end
def error_tag(changeset, form, field) do
if changeset.action do
error_tag(form, field)
end
end
Run Code Online (Sandbox Code Playgroud)
添加错误的正确方法是什么,以便我可以在表单字段中显示它们.我是否必须将错误添加到@conn或f(表单)或是否有其他方法可以获得?
我正在使用 phoenixframework 创建一个项目,并使用 gettext 添加一些翻译。该命令mix gettext.extract --merge从控制器和模板中获取我所有的翻译键并将其存储在.pot和.po文件中。
但是我在配置文件中有一些翻译键,我将它们用作表单选择框中的选择选项。目前我有一个键列表:[:key1, :key2, key3, ..., keyN].
现在我需要一个关键字列表来显示翻译并使用选择框选择键。我的结果是这样的:[{"translation 1": key1}, {"translation 2": key2}, {"translation 3": key3}, ..., {"translation N": keyN}]。
问题:
我不应该碰我的.pot文件,我不能将我的翻译密钥写入我的.po文件,因为在运行上述命令后它们将丢失。文件将被覆盖。
有没有办法手动添加翻译,以便我可以运行命令从我的项目中获取新翻译,而不会丢失手动添加的翻译?