Rails 3.1 передает данные через почту - PullRequest
1 голос
/ 15 марта 2012

В моем приложении у меня есть модель warehouse , которая владеет несколькими полями, такими как id, имя, описание и т. Д., И логическим полем с именем done.

На мой взгляд, я хочу вставить поле кнопки или ссылки, которое при нажатии должно установить (с помощью метода HTTP POST) warehouse.done = true. Как я могу это сделать?

Примечания: Пользователь не может вводить склад.done поле, поэтому я предполагаю передать его приложению как скрытое поле

Ответы [ 2 ]

3 голосов
/ 15 марта 2012

Использовать ссылку с удаленной опцией.

<%= link_to "Vote", {:controller=>"your_controller_name", :action => 'vote',:id=>@warehouse.id, :vote=>true}, :remote=> true, :method => :put %>

В вашем контроллере

def vote
  @warehouse = Warehouse.find(params[:id])
  @warehouse.update_attribute(:vote, params[:vote])
  respond_to do |format|
    format.js
  end
end

В вашем файле маршрутов

resources :your_controller_name do
  collection do
   put 'vote'
  end
end

На странице просмотра голосования добавьте новый DIV для отображения уведомления о вспышке.

<div id="flash_notice" style="display: none;"></div>

Создайте новый шаблон RJS "voice.js.erb" со следующим кодом.

$("#flash_notice").html("You have voted successfully");
$("#flash_notice").show("slow");

Дайте мне знать, если у вас возникнут проблемы.

1 голос
/ 15 марта 2012

Я сделал пару предположений о представлениях, контроллер.

HTML

<a href="#" id="set-warehouse-done"> DONE </a>
<input id="warehouse-id" type="hidden" value="24">

JS

$(document).ready(function() {
  $('#set-warehouse-done').click(function() {
    $.ajax({
      url: '/warehouse/' + $('#warehouse-id').attr('value');
      type: 'POST'
      data: done: true
    });
  });
}

warehouse_controller.rb

def update
  @warehouse = Warehouse.find(params[:id])
  if params[:done]
    if @warehouse.update_attributes(:done, params[:done])
      flash[:notice] = 'Warehouse updated successfully'
    else
      flash[:error] = 'Could not update warehouse'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...