Имам проблемче с rjs-а
-
В приложението,което пиша имам един модел Problem и искам да направя страничка за промяна на problem. Идеята ми е следната: понеже можем да редактираме само съществуващи задачи, в началото зареждам всички тях в един select box и след като се натисне submit,с помощта на java script отдолу показвам текущите стойности на полетата. Обаче по необясними за мен причини вместо да се изпълни java script-а се изпечатва кода му. Ето кода на методите в контролера както и на rjs файла и rhtml файла:
edit_problem.rhtml:
<% form_remote_tag :url => {:action => :show_problem} do %> <% options = {}%> <% Problem.find(:all).each{|t| options[t.name] = t.problem_id}%> Select problem<%= select_tag :problem, options_for_select(options) %><br> <%= submit_tag "edit problem"%> <%end%> <div id ="problem"> <%= render(:partial => 'problem',:object => @problem)%> </div> <%= link_to "back_to_index",:action =>:index%> show_problem: def show_problem @problem = Problem.find_by_problem_id(params[:problem]) end show_problem.rjs: page.replace_html("problem",:partial => 'problem', :object => @problem) _problem.rhtml: <% unless problem.nil?%> <% form_for :problem,problem, :url => {:action => :do_edit,:id => problem.problem_id} do |f|%> Problem name:<%=f.text_field :name%><br> Time limit:<%= f.text_field :time_limit%><br> Letter:<%= f.text_field :letter%><br> Upload new tests: <%= file_field_tag :tests%> Upload new description: <%= file_field_tag :description%><%= select_tag :type,options_for_select(["doc","pdf"])%> <% submit_tag "Edit"%> <%end%> <%end%>
А когато изпълня действията получавам ето това:
try { Element.update("problem", "\n\n \074form action=\"/spoj0_admin/do_edit/14\" method=\"post\"\076\n Problem name:\074input id=\"problem_name\" name=\"problem[name]\" size=\"30\" type=\"text\" value=\"try\" /\076\074br\076\n Time limit:\074input id=\"problem_time_limit\" name=\"problem[time_limit]\" size=\"30\" type=\"text\" value=\"3\" /\076\074br\076\n Letter:\074input id=\"problem_letter\" name=\"problem[letter]\" size=\"30\" type=\"text\" value=\"TRTRT\" /\076\074br\076\n Upload new tests: \074input id=\"tests\" name=\"tests\" type=\"file\" /\076\n Upload new description: \074input id=\"description\" name=\"description\" type=\"file\" /\076\074select id=\"type\" name=\"type\"\076\074option value=\"doc\"\076doc\074/option\076\n\074option value=\"pdf\"\076pdf\074/option\076\074/select\076\n \n \074/form\076\n \n"); $("problem").fade(); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"problem\", \"\\n\\n \\074form action=\\\"/spoj0_admin/do_edit/14\\\" method=\\\"post\\\"\\076\\n Problem name:\\074input id=\\\"problem_name\\\" name=\\\"problem[name]\\\" size=\\\"30\\\" type=\\\"text\\\" value=\\\"try\\\" /\\076\\074br\\076\\n Time limit:\\074input id=\\\"problem_time_limit\\\" name=\\\"problem[time_limit]\\\" size=\\\"30\\\" type=\\\"text\\\" value=\\\"3\\\" /\\076\\074br\\076\\n Letter:\\074input id=\\\"problem_letter\\\" name=\\\"problem[letter]\\\" size=\\\"30\\\" type=\\\"text\\\" value=\\\"TRTRT\\\" /\\076\\074br\\076\\n Upload new tests: \\074input id=\\\"tests\\\" name=\\\"tests\\\" type=\\\"file\\\" /\\076\\n Upload new description: \\074input id=\\\"description\\\" name=\\\"description\\\" type=\\\"file\\\" /\\076\\074select id=\\\"type\\\" name=\\\"type\\\"\\076\\074option value=\\\"doc\\\"\\076doc\\074/option\\076\\n\\074option value=\\\"pdf\\\"\\076pdf\\074/option\\076\\074/select\\076\\n \\n \\074/form\\076\\n \\n\");\n$(\"problem\").fade();'); throw e }
Публикувано преди повече от 4 години -
Открих си грешката: бях забравил да добавя следния ред в header-а на layout-а:
<%= javascript_include_tag :defaults %>
Публикувано преди повече от 4 години
Нов отговор
Трябва да сте вътре за да отговаряте.