Простой расчет AJAX на Rails, fxn кажется сложнее, чем должно быть - PullRequest
0 голосов
/ 22 июня 2011

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

Мне нужна страница, которая принимает входные данные и рассчитывает объем.В идеале, это будет сделано с AJAX, потому что меня всегда раздражает, когда простая страница заставляет меня перезагрузить его.

Я делал это в IRB с:

radius = 25; length = 0.15;( radius**2) * Math::PI * length *1e-3 
# radius in microns, length in meters, answer in microliters

Но путаница возникает именно здесь.Я понимаю, что должен перенаправить страницу, я понимаю, что мой контроллер отвечает за направление к правильному ответу, но где должен произойти мой расчет?Как мне получить ответы на мою форму?

Кажется, я просто не понимаю, как интегрировать все эти вещи ...

Вот мое мнение (которое отображается, но из которого я, кажется, не могу передать информациюout:

<h2>Here I'll calculate the dead volume of a piece of tubing for you.</h2>

<%= form_tag url_for(:method => :get), :remote => true, :id => 'calculation_entry' do %>
  <div id="internal_diameter">
    <label for="diameter">Enter the internal diameter:</label>
    <%= text_field_tag :diameter %>
    <label for="diameter_unit"></label>
    <%= select_tag :diameter_unit, options_for_select({
      "Microns" => 'micrometers', 
      'inches' => 'inches'
    })  %>  
  </div>
  <div id="length">
    <label for="length">Enter the length of tubing:</label>
    <%= text_field_tag :length %>
    <label for="length_unit"></label>
    <%= select_tag :length_unit, options_for_select({
      "meters" => 'meters', 
      "inches" => 'inches'
    })  %>
  </div>
  <%= submit_tag "Calculate!" %>
<% end %>

<div class="output">
  <span>The volume of the tubing parameters entered is:</span> 
 <%= @object %>
</div>

А вот контроллер, который я построил:

class PagesController < ApplicationController

  def index
  end

  def dead_volume
    @object = Object.new
  end

  def calculate
    @object = params.inspect
  end
end

1 Ответ

3 голосов
/ 22 июня 2011

Вот пример того, как я реализовал функцию автозаполнения с помощью jQuery UI & Ajax. Это может помочь вам определить, как это сделать для нужд вашего собственного приложения.

Примечание: это было сделано под Rails 3.0.X. Возможно, есть другие / лучшие способы сделать это.

Посмотреть / Компоновка:

<div id="search">
  <%= form_tag('/<my_controller>/search', :method => :get, :id => "#search-text") do %>
    <input type="text" name="search" value="" id="search-text" placeholder="Search"> 
    <input type="submit" value="Go" class="button">
  <% end %>
</div>

JavaScript (примечание: использует пользовательский интерфейс jQuery):

$(document).ready(function() {

  $("#search-text").autocomplete({
    source: function(request, response) {
      $.getJSON("/<my_controller>/autocomplete", {
        search: request.term
        },
      response);
    },
    minLength: 2,
    select: function(event, ui) {
      this.value = ui.item.value;
      return false;
    },
  });

});

Маршрут:

match '/<my_controller>/autocomplete' => '<my_controller>#autocomplete', :via => :get

Контроллер:

respond_to :json, :only => [:autocomplete]

def autocomplete
  @model = Model.autocomplete(params[:search])
  render(:json => @model)
end

Надеюсь, это поможет вам встать на пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...