Спагетти Рельсы Маршрутизация и приглашения Болонский - PullRequest
0 голосов
/ 11 марта 2010

Я не совсем уверен, есть ли здесь одна проблема, или я подошел к ней неправильно, но любые предложения будут с благодарностью!

В приложении, когда пользователь регистрируется, получает привилегии и настраивает свою страницу, он может затем пригласить коллег по электронной почте.

Письмо имеет код активации, помеченный в конце. Пример URL будет " / user / new / xxxxxxxxx ".

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

Когда коллега делает ошибку в форме регистрации пользователя, URL-адрес забывает, что есть код активации, и возвращается к сообщениям проверки и довольно пустому URL-адресу «/ users». Когда коллега исправляет свои ошибки и регистрирует клики, они представляются как полноценный пользователь, а не как приглашенный коллега.

Это происходит потому, что у меня есть предложение if на странице 'users / new'

<% if @activation_code %>
  Show colleague messages of invitation and happiness
<% else %>
  Show fully fledged user ego stroking messages
<% end %>

Мой маршрут для поиска параметра кода URL:

map.signup '/users/new/:code', :controller => 'users', :action => 'new', :code => nil

Как я уже говорил, я подошел к этому совершенно неправильно? здесь одна проблема?

UPDATE Этот эпизод на Rails Cast решил почти все проблемы, с которыми я столкнулся: Приглашения бета-версии

Хотя, чтобы отличить, приходил ли человек по приглашению или нет, я просто использовал этот блок условий:

if !@user.invitation_id.blank?

и это прекрасно сработало.

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Я предполагаю, что ваш контроллер выглядит так:

def create
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

Проблема в том, что у вас больше нет @activation_code в представлении. Поэтому я бы предложил передать код активации обратно в скрытое поле формы.

def create
  @activation_code = params[:activation_code]
  if @user = User.create(params[:user]) && @user.new_record?
    #take the user to where you want them to go
  else
    #there was an error
    flash[:error] = "Oops, blah blah blah"
    render :action => "new"
  end
end

Таким образом, при рендеринге «нового» представления из действия создания у вашего представления по-прежнему будет необходимый @activation_code, чтобы помочь ему отобразить соответствующие условные элементы.

0 голосов
/ 11 марта 2010

После того, как они зашли на страницу с помощью кода подтверждения, вы можете рассмотреть возможность включения кода подтверждения в тег <input type="hidden" />, чтобы обеспечить его сохранение между обратными передачами.

В противном случае вам нужно изменить действие для формы регистрации, включив в него код активации; как то так:

form_for @user, :url => "/users/new/#{@activation_code}" do |f|
# ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...