2014-10-21 2 views
-2

사용자가 특정 Redmine Issue 사용자 정의 필드를 편집하고 저장할 수있는 간단한 Redmine 플러그인을 개발하기 시작했습니다. 나는 Rails와 Redmine 플러그인 작성에 완전히 익숙하지 않으므로 이것이 매우 간단하고 쉬운 질문 인 경우 실례합니다.표 형식을 제출하고 컨트롤러에 해시를 전달하십시오.

내가 지금까지 가지고있는 것은 특정 제품 및 버전의 문제점을 다른 사용자 정의 필드와 함께 보여주는 표입니다. 여기에 이미지 참조하십시오 내가하고 싶은 무엇

changelog table

이 (텍스트 영역 내)에 사용자 정의 필드 "참고 설명"을 변경하는 것입니다 그리고 내가 "변경 사항 저장"을 쳤을 때 내가 좋아하는 것 해당 행에 대해 확인란을 클릭 할 때마다이 양식의 모든 필드가있는 해시 (문제 ID 및 문제 설명 포함)를 컨트롤러에 보냅니다. 컨트롤러는 주어진 이슈 번호에 대한 새로운 설명을 수신하고 사용자가 입력 한 새로운 문자열로 이슈 필드 "노트 설명"을 업데이트합니다.

다음은 관련 코드 스 니펫입니다.

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> 

, 나는 모른다.

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 데이터베이스에 있으므로 모델이 필요하지 않으므로 모델이 없습니다. 사용자가 양식을 제출할 때 컨트롤러에 문제 번호와 문제 메모 설명이 포함 된 해시를 요청합니다.

가능한 한 레일을 사용하고 싶습니다. 따라서 피할 수 있으면 자바 스크립트를 사용하고 싶지 않습니다.

도움이 될 것입니다. 시간 내 주셔서 감사드립니다.

답변

0

나는 두 개의 실수를 만들고 있었다 :

    내가 잘못된 폼 헬퍼를 선택했다
  1. 을;
  2. 양식 데이터를 여러 테이블 요소로 분리했습니다 (원본 코드 조각에는 표시되지 않음)., text_area

이러한 변경을 만들기로 text_area_tag에서 text_field_tag ​​

  • 에 label_tag에서 CHECK_BOX
  • 에 checkbox_tag에서

    1. :

    내 솔루션은 다음과 같은 형식 헬퍼를 교체했다 컨트롤러에서받은 매개 변수를 사용자가 방금 변경 한 모든 양식 데이터에서 쉽게 확인할 수있었습니다. 그는 본다. I 모든 형태를 캡처 할 수 있도록

    또한, 초기 때 form_tag 요소는 사용자의 변화는 다음과 같이, (I 지금 막 1 개 테이블이) 이제 이외 테이블 요소 필드들이있다 :

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