Я создал модель User и модель Profile. На моей домашней странице у меня есть ссылка на панели навигации dropmenu, которая ссылается на «Редактировать профиль». Проблема, с которой я сталкиваюсь, - «Никакие соответствия маршрутов {: action =>" edit ",: controller =>" profiles ",: id => nil} отсутствуют необходимые ключи: [: id]".Как мне изменить свой профиль, связанный с пользователем?
Путь к странице редактирования «edit_profile_path» с глаголом GET и шаблоном URI «/profiles/:id/edit(.:format» ». Мне сложно вставить «id». Ниже приведен код, который у меня есть в моем приложении.
В модели Profile файле у меня есть:
class Profile < ActiveRecord::Base
belongs_to :user, dependent: :destroy
end
В файле модели пользователя у меня есть:
class User < ActiveRecord::Base
has_one :profile
end
Профиль имеет много атрибутов, но один из них является "user_id" который является целым числом, равным идентификатору пользователя. Таким образом, пользователь №5 с идентификатором № 5 является владельцем профиля № 5. Вот код, который я имею в Вид файла:
<li><%= link_to "Edit Profile", edit_profile_path(@profile) %></li>
Что касается кода непосредственно выше, я попытался вставить различные коды в скобках, от @ profile.id, @profile, @ user.id и @user. Но это не сработало.
Я создал контроллер профилей, и я думаю (но я не уверен), что моя проблема исходит из файла profiles_controller. Вот код, у меня есть:
class ProfilesController < ApplicationController
before_action :authenticate_user!
before_action :set_profile, only: [:edit, :update]
def edit
end
def new
@profile = Profile.new
end
def create
@profile = Profile.new(profile_params)
@profile.user_id = current_user.id
if @profile.save
redirect_to welcome_path
else
render 'new'
end
end
def update
@profile.update(profile_params)
redirect_to welcome_path
end
private
def set_profile
@profile = Profile.find(params[:id])
end
end
Спасибо @KMRakibul! Я ценю, что вы помогаете мне. Метод current_user работает! – Mauricio