Как вы вызываете действие контроллера с помощью jQuery из файла application.js? - PullRequest
0 голосов
/ 01 апреля 2011

Я использую плагин автозаполнения jQuery и хочу настроить это событие:

select: function(event, ui) {
           $('.topic_field').val(ui.item.topic.name);
           return false;

По сути, оно вызывает обратные вызовы, когда выбран элемент из выпадающего списка.На данный момент он только добавляет выбранный элемент в текстовое поле.Я хочу, чтобы и поле было заполнено, и чтобы мое приложение отправляло запрос POST к действию контроллера обновления видео, чтобы пользователю не нужно было явно нажимать кнопку.Как я могу это сделать?

ОБНОВЛЕНИЕ:

Вот форма в виде показа видеоконтроллера:

<%= form_for @video, :url => {:action => "update"}, :remote => true do |f| %>
  <div class="field">
  <%= f.text_field :topic_names, :class => "topic_field" %>
  </div>
  <%= f.submit "Add Topic" %>
<% end %>

Вот мой код jQuery:

var url = $('.edit_video').attr('action');
var val = ui.item.topic.name;
$.post(url, {data:val});

Это в моем маршруте.rb:

resources :videos
resources :video_votes
resources :users
resources :profiles
resources :genres
resources :topics
resources :topicables
resource :session

Вот мое действие по обновлению:

def update
@video = current_user.videos.find(params[:id])

respond_to do |format|
  if @video.update_attributes(params[:video])
    format.html { redirect_to(@video) }
    format.js
  else
    format.html { render :action => "edit" }
  end
end
end

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Ознакомьтесь с jQuery.post документацией о том, как отправить данные из окна выбора в соответствующее действие контроллера.

Я не знаком с плагином автозаполнения, но яПредположим, что оно следует за событием onChange в поле выбора.Когда пользователь сделал выбор, вы должны выполнить следующее (не проверено):

var url = $('myForm').attr('action');
var val = $('mySelectBox').val();
$.post(url, {data:val})

В вашем контроллере вы можете получить к нему доступ, используя:

params[:data]

, который вернет значениевашего окна выбора.Затем вы можете использовать это как обычно в коде вашего контроллера.

0 голосов
/ 01 апреля 2011

используйте функцию jquery ajax для извлечения данных из URL вашего действия ("/ themes / list") или чего-то еще

$.post('video/update', 
  data: {yourdata},
  function(data) {
    //callback function
  }
);

в вашем видео # обновлении обязательно верните что-нибудь для вашего js-запроса:

def update
   blah
   respond_to do |format|
     format.js { return somethinghere }
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...