Проверка Rails в форме, используемой в нескольких действиях контроллера - PullRequest
0 голосов
/ 14 января 2012

Использование этого кода для моего действия по редактированию и обновлению ниже.У меня 2 проблемы

  1. Как узнать, какая форма была отправлена ​​(основы, фотографии, интересы или детали?)

  2. У меня есть настройкаvalidates_presence_of всех полей профиля, но эта форма используется в общем для обоих действий контроллера (поэтому не каждый атрибут совпадает с обоими), и я получаю ошибки.

Как я могу это исправить?

def edit 
  def sub_layout
    "left"
  end

  @profile = Profile.find params[:id]
  #authorize! :update, @profile

  what = params[:what]
  if ["basics", "location", "details", "photos", "interests"].member?(what)
    render :action => "edit_#{what}"
  else
    render :action => "edit_basics"
  end

end

def update
  @profile = Profile.find(params[:id])

  respond_to do |format|
    if @profile.update_attributes(params[:profile])
      format.html { redirect_to @profile, notice: 'Profile was successfully updated.' }
    else
      format.html {

        #there was an error,
        #redirect to the correct "what" form /edit/basics for example
        # what is empty how to get the value or a better way for this?

        what = params[:what]
        render :action => "edit_#{what}"

      }


    end
  end
end
...