Здравствуйте я знаю, что это общая проблема, но я не могу позволить ей работать .. Мне нужно активировать аккаунт из электронной почты ссылки .. URL выглядит http://domain.tld/activation/[email protected]/d4sa89dsa98
и я хочу доступ, что параметры из контроллера :-)Rails Params в URL
routes.rb
match "activation/:email/:activation_key" => "frontend#activation", :via => :get
frontend_controller.rb
def activation
@user = User.find(:conditions => {:email => params[:email], activation_key => params[:activation_key]})
render "activation"
end
и им получать ошибок
No route matches [GET] "/activation/[email protected]/a46d4sa8dsa68d"
мой activation.html.erb
<% if @user %>
Activation successful.
<% else %>
Activation key is invalid.
<% end %>
EDIT: ------------------ -------------------------------------------------- -------------------------------------------------- -----
Я заменил: параметр электронной почты: параметр id, потому что он выглядит лучше, im not если Array.new(32){Random.new.rand(36).to_s(36)}.join
- уникальная строка, но это не имеет значения сейчас.
маршрут
match "activation/:id/:activation_key" => "frontend#activation", :via => :get
рейк маршруты
GET /activation/:id/:activation_key(.:format) frontend#activation
контроллер внешнего интерфейса
def activation
@user = User.find(:conditions => {:id => params[:id], :activation_key => params[:activation_key]})
render "activation"
end
ошибка
Couldn't find User without an ID
но РАБОТЫ поэтому проблема находится в состоянии
@user = User.find(params[:id])
РЕШЕНИЕ
@user = User.find(:first, :conditions => {:id => params[:id], :activation_key => params[:activation_key]})
Почему у вас есть электронная почта? Я этого раньше не видел. Я бы использовал только ключ активации, если бы был вами. – Mischa
Вы абсолютно правы, я не был уверен в уникальности этого генератора, поэтому я добавляю электронное письмо, но идентификатор пользователя будет лучше, или я могу использовать 'SecureRandom.uuid' .. я изменил: email: id, но теперь он говорит' Couldn ' t найти пользователя без ID', что означает 'params [: id]' doesnt work .. я отредактирую вопрос для получения дополнительной информации – Muflix