2014-10-21 2 views
-2

Я начинаю разрабатывать простой плагин Redmine, который позволит пользователю редактировать и сохранять специальное поле Redmine Issue. Я совершенно новый для Rails и для написания плагинов Redmine, поэтому, пожалуйста, извините меня, если это очень простой и простой вопрос для ответа.Отправить табличную форму и передать хэш контроллеру

Что я до сих пор представляет собой таблицу, в которой отображаются выпуски данного продукта и версии, а также другие настраиваемые поля. Пожалуйста, смотрите изображение здесь:

changelog table

То, что я хотел бы сделать, это изменить настраиваемое поле «Примечание Описание» (внутри текстовой области), и когда я попал в «Сохранить изменения» Я хотел бы для отправки контроллеру хеш со всеми полями этой формы (включая Идентификатор проблемы и Описание примечания к проблеме), всякий раз, когда для данной строки щелкнул галочку. Затем контроллер получит новые описания для данного номера проблемы и обновит поле «Примечание» с новой строкой, введенной пользователем.

Вот соответствующие фрагменты кода.

index.html.erb:

<h3>Changelog</h3> 
<table> 
    <%= form_tag(controller: "polls", action: "save", method: "get", 
    project_id: @project, id: @version_selected_combo) do %> 
    <tr> 
    <th class="checkbox"></th> 
    <th class="tracker">Tracker</th> 
    <th class="issue">Issue ID</th> 
    <th class="status">Status</th> 
    <th class="description">Note Description</th> 
    <th class="subject">Subject</th> 
    </tr> 
    <% @improvement_issues.each_with_index do |issue, index| %> 
    <tr> 
    <td class="checkbox"><%= check_box_tag 'issue_checkbox' %></td> 
    <td class="tracker"><font color="LimeGreen"> 
     <%= issue.to_s.split(' ').at(0) %></font></td> 
    <td class="issue"> 
     <%= label_tag(:issue_id, issue.to_s.split(' ').at(1)[1..-2]) %></td> 
    <td class="status"><%= @improvement_issues_descriptions[index] %></td> 
    <td class="description"> 
     <%= text_area_tag(:transfer_note_description, 
         @transfer_notes_descriptions[index], 
         :cols => "100", :rows => "1") %></td> 
    <td class="subject"><%= sanitize issue.to_s.partition(': ')[2] %></td> 
    </tr> 
    <% end %> 
    <tr> 
    <td><%= submit_tag("Save changes") %></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    </tr> 
    <% end %> 
</table> 

Как вы можете видеть, я использую форму Helper внутри таблицы, я не знаю, если это правильный или лучший способ сделать это.

polls_controller.rb:

def save 
    p params 
end 

Это просто метод вызывается после нажатия на кнопку "Сохранить изменения".

В журнале я получаю, если я проверю как чек-боксы является следующее:

[ 2014-10-21 15:55:21.2754 21609/7f0234d4e700 Pool2/Implementation.cpp:1291 ]: [App 21695 stdout] {"utf8"=>"✓", "issue_checkbox"=>"1", "transfer_note_description"=>"description for the note here", "commit"=>"Save changes", "id"=>"trunk", "method"=>"get", "project_id"=>"sandbox", "action"=>"save", "controller"=>"polls"} 

Я не в состоянии послать контроллер описаний нот и номер выпуска.

У меня нет модели, потому что мне она не нужна, так как все данные уже находятся в базе данных redmine. Когда пользователь отправляет форму, я хочу, чтобы контроллер получил хэш с номером проблемы и описанием примечания к проблеме.

Я хочу использовать рельсы как можно больше, и поэтому я не хочу использовать javascript, если я могу его избежать.

Любая помощь будет приветствоваться. Спасибо заранее за ваше время.

ответ

0

Я делал две ошибки:

  1. я выбирал неправильные формы хелперов;
  2. Я отделял свои данные формы от разных элементов таблицы (хотя это не показано в исходном фрагменте кода).

Мое решение было заменить следующие формы помощникам:

  1. От checkbox_tag в check_box
  2. От label_tag в text_field_tag ​​
  3. От text_area_tag в text_area

Внесение этих изменений, Я мог очень легко увидеть на параметрах, полученных контроллером все данные формы, которые пользователь только что изменил на t он смотрит.

Кроме того, начальный элемент form_tag теперь вне все элементы таблицы (я просто 1 таблицу сейчас), так что я могу захватить все поля формы изменения пользователем, например:

<%= form_tag(controller: "polls", action: "save", project_id: @project, id: @version_selected_combo) do %> 
<table> 
(...) 
all the form elements ... 
(...) 
</table> 
<% end %>