Я изо всех сил пытаюсь выяснить, как именно это заставить работать, но по сути у меня есть 2 модели:
class User
class Profile
Один пользователь имеет один профиль.
У меня также естьКонтроллер настроек с действиями «профиль» и «обновление»:
class SettingsController < ApplicationController
def profile
@profile = User.find_by_id(current_user).profile
end
def update
set_profile
respond_to do |format|
if @profile.update(profile_params)
format.html { redirect_to @profile, notice: 'Profile was successfully updated.' }
else
format.html { render :edit }
end
end
end
private
def profile_params
params.require(:profile).permit(:name)
end
end
и страница / настройки / профиля:
<h1>Settings</h1>
<div>
<div>
Name: <%= @profile.name %>
</div>
<%= form_with(model: @profile, local: true) do |form| %>
<div class="field">
<%= form.label :username %>
<%= form.text_field :username %>
</div>
<div class="field">
<%= form.label :surname %>
<%= form.text_field :surname %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
</div>
Мои маршруты:
get 'settings/profile', to: 'settings#profile', as: :settings_profile
post 'settings/profile', to: 'settings#update', as: :update_settings_profile
Какя могу получить свою форму (из SettingsController), чтобы разрешить поля для моих моделей пользователей и профилей?
* Изменить
Я изменил свой путь_профиля для извлечения из имени пользователя:
def profile_path(profile)
'/' + 'profiles' + '/' + profile.user.username
end
В настоящее время, когда я загружаю страницу, содержащую форму, я получаю эту ошибку:
wrong number of arguments (given 2, expected 1)