Ruby on rails RubyonRails3:如何创建自定义表单元素/表单字段输入方法?

Ruby on rails RubyonRails3:如何创建自定义表单元素/表单字段输入方法?,ruby-on-rails,ruby-on-rails-3,rubygems,Ruby On Rails,Ruby On Rails 3,Rubygems,我想为RubyonRails3创建一个自定义表单元素,并将其打包为gem。我来自PHP(Zend Framework)背景,在这里可以轻松创建自定义表单元素以在应用程序中使用。作为RubyonRails的新手,我不知道如何开始,把代码放在哪里,以及扩展哪些类。你能给我指一下正确的方向吗?这是我想要结束的代码: <%= form_for(@model) do |f| %> <div class="field"> <%= f.label :field_nam

我想为RubyonRails3创建一个自定义表单元素,并将其打包为gem。我来自PHP(Zend Framework)背景,在这里可以轻松创建自定义表单元素以在应用程序中使用。作为RubyonRails的新手,我不知道如何开始,把代码放在哪里,以及扩展哪些类。你能给我指一下正确的方向吗?这是我想要结束的代码:

<%= form_for(@model) do |f| %>
  <div class="field">
    <%= f.label :field_name %><br />
    <%= f.my_custom_element :field_name %>
  </div>
<% end %>


…这将生成一些HTML,如下所示:

<div class="field">
  <label for="model_field_name">Notes</label><br>
  <input type="text" name="model[field_name][field1]">
  <input type="text" name="model[field_name][field2]">
  <input type="text" name="model[field_name][field3]">
</div>

注意事项
…然后,当用户提交表单时,会有一些自定义验证和自定义逻辑,以便在Rails将数据保存到数据库之前将字段再次缝合到一个字段中


如何创建此自定义表单元素来执行此操作?(顺便说一句,我一直称它为“自定义表单元素”,因为它在Zend Framework中就是这样称呼的。如果Rails对此有不同的名称,请更正,这样我就可以更轻松地查找有关此主题的信息。)

如果您想要验证和MVC,我建议您开始研究Rails引擎


Andrew,您可以从自己的助手开始,该助手将生成HTML代码。 当您对它感到满意时,请继续查看默认帮助程序的外观

     # File actionpack/lib/action_view/helpers/form_tag_helper.rb, line 292
292:       def check_box_tag(name, value = "1", checked = false, options = {})
293:         html_options = { "type" => "checkbox", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys)
294:         html_options["checked"] = "checked" if checked
295:         tag :input, html_options
296:       end

在那之后,深入到:)

实际上,这正是我正在做的。我甚至安装了Rails3.1,这样我就可以得到新的插件生成器(RailsPluginNew)。然而,我不知道下一步该怎么做,因为我以前从未创建过自定义表单元素,也从未想过在github上查看Rails源代码。好主意你能详细解释一下你说的“从你自己的助手开始”是什么意思吗?我以前没有写过这样的东西,所以我不知道从哪里开始。我决定克隆Rails repo,以便在IDE中本地查看它。我早就该这么做了!