Nano Hash - криптовалюты, майнинг, программирование

Rails Route добавляет точку с помощью Devise

Мое приложение rails добавляет точку/точку "." в маршрут при попытке перейти к профилю пользователя devise gem.

маршруты.rb:

devise_for :users, :controllers => { :registrations => "registrations" } 

(В основном, используя маршруты, чтобы разрешить некоторые пользовательские функции - он должен по-прежнему использовать пути маршрутизации по умолчанию.

Вывод Rake-маршрутов:

user_registration POST   /users(.:format)               registrations#create
new_user_registration GET    /users/sign_up(.:format)       registrations#new
edit_user_registration GET    /users/edit(.:format)          registrations#edit

Ссылка в поле зрения:

<%= link_to 'Edit', edit_user_registration_path(user) %>

Где пользователь определен в цикле .each.

Выводимая ссылка в URL выглядит так:

http://localhost:3000/users/edit.2

Моя цель - иметь ссылку для редактирования профиля любого пользователя (конечно, разрешения контролируются за пределами этих элементов).

Я «думаю», что моя проблема заключается в файле route.rb и неправильном указании пути. Я думаю, что это должно быть что-то, что будет иметь rake routes, который включает параметр :id.

Спасибо за помощь!


Ответы:


1

Это обычный маршрут, registrations#edit предназначен для редактирования текущего пользователя, вошедшего в систему. Если вы хотите использовать интерфейс CRUD для пользователей (я думаю, вы хотите редактировать пользователя), вы можете добавить еще один контроллер (например, users_controller.rb) и выполнить некоторые действия, например для контроллер:

def edit
  @user = User.find(params[:id])
end

def update
   if params[:user][:password].blank?
     params[:user].delete(:password)
     params[:user].delete(:password_confirmation)
   end
   @user = User.find(params[:id])

   respond_to do |format|
     if @user.update_attributes(params[:user])
        format.html { redirect_to some_path, notice: 'Updated.' }
        format.json { head :no_content }
      else
        format.html { 
          flash[:alert] = "Something wrong"
          render :action => :edituser
        }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
end

На вашем routes.rb вы можете следовать вот так

scope '/user' do
 match '/edit/:id' => 'users#edit', :as => :edit_user
 put '/update/:id' => 'users#update', :as => :update_user
end

И ссылки на каждый раздел выглядят так:

<%= link_to 'Edit', edit_user_path(user) %>

использованная литература :

16.06.2014
  • Спасибо! Именно то, что я хотел сделать. Оцените быстрый ответ. 17.06.2014

  • 2

    Я думаю, что Devise's edit_user_registration_path использует current_user внутри, поэтому вам не нужно (user) в вашем link_to

    16.06.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..