Ruby on Rails 3: Как создать собственный элемент ввода / метод ввода поля формы? - PullRequest
0 голосов
/ 16 июля 2011

Я хотел бы создать пользовательский элемент формы для Ruby on Rails 3 и упаковать его как драгоценный камень. Я пришел из PHP (Zend Framework), где легко создавать собственные элементы формы для использования в вашем приложении. Будучи новичком в Ruby on Rails, я не знаю, с чего начать, где разместить свой код и какие классы расширять. Можете ли вы указать мне в правильном направлении? Вот код, с которым я хочу закончить:

<%= 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 есть другое имя для этого, пожалуйста, исправьте меня, чтобы мне было легче найти информацию по этому вопросу .)

Ответы [ 2 ]

0 голосов
/ 16 июля 2011

Эндрю, вы можете начать с вашего собственного помощника, который в результате будет генерировать 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

после этого погружения в источник :)

0 голосов
/ 16 июля 2011

Если вы хотите проверки и MVC, я предлагаю начать изучать Rails Engines.

http://edgeapi.rubyonrails.org/classes/Rails/Engine.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...