Я совершенно новичок в рубине. Моя версия Ruby 2.2. У меня есть форма редактирования профиля. Я хочу показать данные таблицы и формы в двух разных местах. Пожалуйста, проверьте мой код

< Сильный > users_controller.rb

def edit_profile
    @user = User.get_profile(session[:user_id])
    raise $user.inspect
    respond_to do |format|
          if params[:user][:avatar]
            params[:user][:photo] = orginal_file_upload params[:user][:avatar]
          end
          raise params.inspect
          if @user.update(user_params)
            format.html { redirect_to :back, notice: 'Your profile was successfully updated.' }
            format.json { render :show, status: :ok, location: @user }
          else
            format.html { render :my_profile }
            format.json { render json: @user.errors, status: :unprocessable_entity }
          end
     end
end

Здесь я определил raise $user.inspect и raise params.inspect. Я хочу получить оба данных. Но здесь на моей странице идет только первая. Пожалуйста, проверьте и дайте мне знать, как получить оба значения массива.

Спасибо.

-1
Chinmay235 19 Апр 2016 в 12:54

2 ответа

Лучший ответ

raise - это механизм выдачи ошибок. raise $user.to_s возвращает управление из строя. Вы можете использовать метод puts для отображения значений в контроллере.

Правильный код будет:

def edit_profile
@user = User.get_profile(session[:user_id])

respond_to do |format|
      if params[:user][:avatar]
        params[:user][:photo] = orginal_file_upload params[:user][:avatar]
      end

      @user.update(user_params)
      format.html { render :inline => "User<p> ID:<%= @user.id %><br>NAME: <%= @user.name %><br>EMAIL: <%= @user.email %></p>Params <p><%= params.inspect%></p>".html_safe }


 end
end
1
Zain Zafar 19 Апр 2016 в 11:39

Назначьте их переменным экземпляра, таким как @user и @params, и получите к ним доступ в своих представлениях. Сказав, что вы уже назначили переменную @user и params автоматически доступен в ваших представлениях.

# In your view
<%= @user.name %>

<%= params %>

Также подумайте о том, чтобы сделать ваш контроллер RESTful. Вы можете отправить запрос PUT на URL-адрес вашего контроллера (например, PUT profile/1), он автоматически вызовет ваш метод ProfileController#edit.

0
Uzbekjon 19 Апр 2016 в 10:05