Как использовать шаблоны js.erb и Ajax в Rails 3? - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть приложение, в котором я хочу выполнить некоторые вычисления на бэкэнде, а затем отобразить результаты на веб-интерфейсе через Ajax.Я не использую ActiveRecord.

Мне показывают код JavaScript вместо его выполнения.Вебрик говорит следующее после того, как я нажимаю кнопку конвертирования:

Started POST "/site/convert.js" for <ip address> at 2011-04-05 01:37:09 +0300
  Processing by SiteController#convert as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"K9De9/J5bsnOxqLdmvl02sOVgmU3c4gEZ/n7DBwJdrw=", "radix"=>"10", "number"=>"2", "commit"=>"Convert"}
Rendered site/convert.js.erb (0.5ms)
Completed 200 OK in 28ms (Views: 22.9ms)

Почему код JavaScript не выполняется?

site_controller.rb:

class SiteController < ApplicationController
  def index
  end

  def convert
    number = params[:number]
    from = params[:radix]
    @decimal = Converter::convert(number, from.to_i, 10)
    @hexadecimal = Converter::convert(number, from.to_i, 16)
    @binary = Converter::convert(number, from.to_i, 2)
  end

end

site /index.html.erb:

<%= form_tag site_convert_path(:format => :js), :id => 'conversion', :remote => true do %>
    <%= radio_button_tag 'radix', 10, true %> Decimal
    <%= radio_button_tag 'radix', 16 %> Hexadecimal
    <%= radio_button_tag 'radix', 2 %> Binary
    <%= number_field_tag 'number', '', :size => '20', :min => 0 %>
    <%= submit_tag 'Convert' %>
<% end %>

<button id="convert" type="button">Convert</button>

<table>
  <thead>Conversions</thead>
  <tr>
    <th>Decimal</th>
    <th>Hexadecimal</th>
    <th>Binary</th>
  </tr>
  <tr>
    <td id="decimal_converted"></td>
    <td id="hexadecimal_converted"></td>
    <td id="binary_converted"></td>
  </tr>

</table>

site / convert.js.erb:

$('#decimal_converted').text("<%= @decimal %>");
$('#hexadecimal_converted').text("<%= @hexadecimal %>");
$('#binary_converted').text("<%= @binary %>");

rout.rb:

Conversions::Application.routes.draw do
  root :to => 'site#index'
  post 'site/convert'
end

1 Ответ

2 голосов
/ 05 апреля 2011

Проблема решена. Возникла проблема с адаптером Rails jQuery, то есть rails.js, который загружался до jQuery, поэтому следующие изменения в макете устранили проблему:

<%= javascript_include_tag ['rails', 'jquery'] %>

изменено на:

<%= javascript_include_tag ['jquery', 'rails'] %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...