Rails отправляет событие при редактировании записи, а также создает? - PullRequest
0 голосов
/ 16 марта 2011

В моем контроллере есть следующий код:

  # GET /kases/1/edit
  def edit 
    @kase = Kase.find(params[:id])
    respond_to do |format|
      format.html { render :layout => 'kaseshow'} # show.html.erb
      format.xml  { render :xml => @kase }
      format.pdf { render :layout => false }
    end 
  end

  # POST /kases
  # POST /kases.xml
  def create
    @company = Company.find(params[:kase][:company_id])
    @kase = @company.kases.new(params[:kase])

    if @kase.save
        UserMailer.deliver_makeakase("xxxxxx@xxxxxxxx.com", "Highrise", @kase) if params[:sendtohighrise]
        UserMailer.deliver_makeakaseteam("xxxxxxxx@xxxxxxx.co.uk", "Highrise", @kase) if params[:notify_team_of_creation]
        @kase.create_freeagent_project(current_user) if params[:send_to_freeagent]

        redirect_to(@kase)

        #flash[:notice] = 'Case was successfully created.'
        flash[:notice] = fading_flash_message("Case was successfully created.", 5)
      else
        render :new
      end        
  end

Я пытаюсь сделать так, если пользователь редактирует случай, а затем выбирает флажок Отправить в Freeagent:

@kase.create_freeagent_project(current_user) if params[:send_to_freeagent]

, то дело повторно отправляется Freeagent (программное обеспечение для онлайн-бухгалтерии).Меня не беспокоит работа с дубликатами, потому что, если кейс уже существует во Freeagent, пользователю не нужно будет повторно его отправлять.

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 16 марта 2011

Где ваш метод обновления? Редактирование вызывается только тогда, когда вы загружаете данные и визуализируете страницу, которую пользователь увидит для редактирования записи. Когда на этой странице нажата кнопка «Сохранить / обновить / отправить», она должна вызывать метод «обновление» в контроллере. Таким образом, вы должны иметь возможность поместить эту же строку в метод 'update' в истинное состояние блока if, который выглядит примерно так:

if @kase.update_attributes(params[:kase])
    #your code would go here
    @kase.create_freeagent_project(current_user) if params[:send_to_freeagent]
    #the rest of the code would go here
end
0 голосов
/ 16 марта 2011

То есть, вы можете создать флажок / радио / скрытое поле в форме редактирования.

Если вы хотите создать несколько моделей для Kase, вы также можете посмотреть на accepts_nested_attributes

...