Я занимаюсь разработкой сайта на основе руководства Hartl. Я хочу переместить функциональность сброса пароля на свой собственный частичный.Rails -Couldn't find User with 'id' =
Я создал частичный _passreset.html.erb. По существу копия _формы, которая показывает ваше имя пользователя и отображает поля password/password_confirm.
Но я даже не добираюсь туда. На странице show.html.erb (страница профиля) у меня есть ссылки на Edit и Password Reset. Вот код:
<% if current_user.admin? || current_user == @user %>
<%= link_to "Edit", edit_user_path(@user) %> |
<%= link_to "Password Reset", user_passreset_path(@user)%>
<% end %>
Когда я нажимаю на «Сброс пароля» ссылка, я получаю сообщение об ошибке следовать:
ActiveRecord :: RecordNotFound в UsersController # показать
Не удалось найти пользователя с идентификатором «» = passreset
источник моя пользователи функция контроллера set_user:
def set_user
@user = User.find(params[:id])
end
маршрут для новой функции выглядит следующим образом:
resources :users do
resources :articles
get 'passreset'
end
рек маршруты показывает эту строку:
user_passreset GET /users/:user_id/passreset(.:format) users#passreset
Я также явно объявлен маршрут (получить «пользователей/passreset»), это не делает разницы.
Почему он ищет идентификатор «passreset»? Я не понимаю.
Я не думаю, что это важно, но это функция passrest от моего контроллера пользователей:
def passreset
respond_to do |format|
if @user.update(user_params)
format.html { redirect_to @user, notice: 'Password was successfully updated.' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
Это заставило меня пройти мимо ошибки. Мне пришлось изменить ссылку, чтобы прочитать passreset_user_path. И теперь .... У меня другая ошибка :(Параметр отсутствует или значение пусто: пользователь. Он указывает на мой сильный оператор params. * Sigh * – SeattleDucati
хорошо откройте новый вопрос, показывая вашу форму и сильные параметры но моя догадка заключается в том, что ваша форма - это просто form_tag, а не form_for @user, поэтому у вас нет параметров: user key, который находится под? – Doon
Я собираюсь взломать его в утром, и откройте новый вопрос, если я не могу разобраться. Спасибо, Doon. – SeattleDucati