Прием предложений с пользовательским действием контроллера - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть проект рельсов 3.2. Есть объект ставки, и я хочу, чтобы пользователь мог принять эту ставку! Как я могу это сделать? Моя первая мысль о том, чтобы создать новый метод на контроллере ставок, и в этом методе мне нужно обновить логическое значение accept bid. Что-то в этом роде?

  def accept
    @bid = Bid.find(params[:id])
    @bid.subject ='accept!!!!'
    flash[:notice] = "Successfully destroyed post."
    respond_to do |format|
      format.html { redirect_to "/mybids" }
      format.json { head :no_content }
    end
  end

1 Ответ

2 голосов
/ 02 апреля 2012

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

Однако предположим, что это аукционный сайт, и у аукционов есть ставки. Когда ставка принята

  • Все остальные заявки на этом аукционе уничтожены
  • Принятая ставка имеет логическое поле accepted, установленное на true.

Если это близко к тому, что вы пытаетесь сделать, то код ниже должен это сделать.

в app/controllers/bids_controller.rb

# PUT /bids/:id/accept
def BidsController < ApplicationController
  def accept
    @bid = Bid.find(params[:id])
    @bid.update_attribute(:accepted, true)
    @bid.auction.bids.each do |rejected_bid|
      rejected_bid.destroy unless rejected_bid == @bid   # destroys all be the accepted bid
    end

    flash[:notice] = "Bid accepted."
    respond_to do |format|
      format.html { redirect_to "/mybids" }
      format.json { head :no_content }
    end
  end
end

Затем вам нужно добавить маршрут для этого действия в ваш файл config/routes.rb. Что-то вроде ...

resources :bids do
  put :accept, :on => :member
end

Сформируйте вид, вы бы связались с этим маршрутом так:

link_to "accept", accept_bid_path(@bid)

И если вы звоните rake routes из командной строки, вы должны увидеть запись, которая выглядит следующим образом:

accept_bid PUT   /bids/:id/accept(.format)    {:action=>"accept", :controller=>"bids}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...