2013-06-09 5 views
0

Я установил плагин Advanced Roadmap для проекта redmine. После установки при попытке создать новую веху, выбрасывается следующее сообщение об ошибке:Redmine: Advanced Roadmap plugin Observe_field error

 
    ActionView::Template::Error (undefined method `observe_field' for # 


The form partial is as follows :

<%= error_messages_for 'milestone' %> <div class="box"> <p><%= f.text_field :name, :size => 60, :required => true %></p> <p><%= f.text_field :description, :size => 60 %></p> <p><%= f.text_field :effective_date, :size => 10 %><%= calendar_for('milestone_effective_date') %></p> <p> <select id="project_selector"> <% @projects.each do |project| %> <option<%= (project == @project) ? " selected" : "" %> id="<%= project.id %>"><%= h(project.name) %></option> <% end %> </select> <% javascript_tag :defer => "defer" do %> function project_changed() { object = window.document.getElementById("project_selector"); if (object) { if (object.selectedIndex != -1) { project_id = object.options[object.selectedIndex].id; <% @projects.each do |project| %> project_div = window.document.getElementById("project_<%= project.id %>_versions"); if (project_div) { project_div.style.display = "none"; project_div.style.visibility = "hidden"; } <% end %> project_div = window.document.getElementById("project_" + project_id + "_versions"); if (project_div) { project_div.style.display = ""; project_div.style.visibility = ""; } } } } jQuery(function($) { $(\"#project_selector\").change(project_change); }) <% end %> </p> <% @projects.each do |project| %> <div id="project_<%= project.id %>_versions"<%= (@project == project) ? "" : "style=\"display: none; visibility: hidden;\"" %>> <table class="list"> <thead> <th><%= l(:field_version) %></th> <th><%= l(:field_effective_date) %></th> <th><%= l(:field_description) %></th> <th><%= l(:label_milestone_plural) %></th> </thead> <% project.versions.sort.each do |version| %> <tr class="<%= cycle("odd", "even") %>"> <td> <%= check_box_tag "versions[]", version.id, @milestone.versions?(version) %> <%= link_to(h(version.name), :controller => :versions, :action => :show, :id => version) %> </td> <td align="center"><%= version.effective_date %></td> <td><%= version.description %></td> <td align="center"><%= version.milestones.collect {|m| link_to(h(m.name), :controller => :milestones, :action => :show, :id => m.id) }.join(", ").html_safe %></td> <tr> <% end %> </table> </div> <% end %> </div>

Как мы должны изменить его наблюдать вопрос поле, как это было deprecated.Any помощь будет оценена.

Я использую

  • ruby 1.9.3 -версия
  • rails 3.2.13 версия
  • redmine 2.x

ответ

0

После небольшого поиска я нашел решение вышеуказанной проблемы.

Очевидно observe_field метод является устаревшим в рельсах 3.
Так что для того, чтобы решить эту проблему, нам нужно просто удалить метод observe_field помощника и добавить яваскрипт кода внутри javascript_tag шаблона вида следующий образом:

<% javascript_tag :defer => "defer" do %> 
    function project_changed() 
    { 
    object = window.document.getElementById("project_selector"); 
    if (object) 
    { 
     if (object.selectedIndex != -1) 
     { 
     project_id = object.options[object.selectedIndex].id; 
     <% @projects.each do |project| %> 
      project_div = window.document.getElementById("project_<%= project.id %>_versions"); 
      if (project_div) 
      { 
      project_div.style.display = "none"; 
      project_div.style.visibility = "hidden"; 
      } 
     <% end %> 
     project_div = window.document.getElementById("project_" + project_id + "_versions"); 
     if (project_div) 
     { 
      project_div.style.display = ""; 
      project_div.style.visibility = ""; 
     } 
     } 
    } 
    } 
    jQuery(function($) 
    { 
    $(\"#project_selector\").change(project_change); 
    }) 
<% end %> 

что именно делается, мы только удалили вспомогательный метод и добавили небольшой код jquery.

jQuery(function($) 
    { 
    $(\"#project_selector\").change(project_change); 
    })