如何使用active_model_attributes gem使用I18n进行翻译?

时间:2018-08-22 13:08:20

标签: ruby-on-rails ruby activerecord rails-i18n activemodel

我正在使用active_model_attributes gem定义属性,并在不从ActiveRecord继承的类中使用验证。

当这些验证失败时,我正在处理错误。当模型无效时,我提出了一个例外:

String userInputText = userInput.getText();  // read the text from the JTextInput
myComboBox.addItem(userInputText);   // add it as a new Item to the combobox

此后,我执行救援操作并调用Proc来重定向用户并显示错误消息:

public class MyProgram extends JFrame {
    // here you declare your global variables
    private JTextInput userInput;
    private JButton okButton;
    private JComboBox myComboBox;    

    public MyProgram () {
        // here you create your objects
        okButton = new JButton("OK");
        myComboBox = new JComboBox<>();
        userInput = new JTextField();

        // then you initialize them
        myComboBox.setModel(new DefaultComboBoxModel<>(new String[] { "First Item" }));

        okButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                 // and that is the code that gets executed once the user clicks the button
                 String userInputText = userInput.getText(); 
                 myComboBox.addItem(userInputText);   
            }
        });
    }

    // this is what Eclipse will propably generate for you so you can launch the program and show your frame:
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MyProgram().setVisible(true);
            }
        });
    }
}

问题是当向用户显示错误消息时,我需要转换模型属性名称。我正在按照this link来组织我的翻译文件,如下所示:

unless self.valid?
  raise Lib::Commands::BaseException.new(self.errors.full_messages)
end

有什么想法吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

因此,经过一些研究,我找到了解决该问题的方法。

问题是我在处理ActiveModel而不是ActiveRecord,而且我的课程在某些模块中。因此,要使其正常工作,我需要进行以下更改:

activemodel:
 attributes:
  module1/module2/module3/class_name:
   attribute: 'attribute'

因此,在使用模块时,定义如下:

module1/module2/module3/class_name:

在使用active_model_attributes时,有必要在activemodel下而不是activerecord下进行定义