Rails - Как я могу установить идентификатор в качестве токена (приложение для приглашений до бета-тестирования, например usehipster) - PullRequest
1 голос
/ 22 февраля 2011

Я пытаюсь написать «вирусное» предварительное бета-приглашение, как можно увидеть на usehipster.com или fork.ly.

В основном будущий тестер:

1.) Вводит свою электронную почту

2.) Перенаправляется в представление (страница ближайшие_сообщения)

3.) Получите ссылку, подобную этой: «http://localhost:3000/?referred_to=the id приглашения тестера » отображается в представлении.

4.) И получите письмо с той же ссылкой.

Если я хорошо понимаю, «идентификатор приглашения тестировщика» действует как токен, чтобы отследить, откуда тестеры получают приглашение.

Мои вопросы:

1.) Как мне сгенерировать идентификатор в ссылке? Я не могу использовать before_create, потому что идентификатор приглашения еще не настроен при регистрации тестера.

Я пробовал это:

в контроллере приглашений

def coming_soon
  @invitation = Invitation.last
end

в views / invitations / coming_soon.html.erb

...
Copy and paste the following link to share wherever you want!</p>

<%= text_field_tag 'code', root_url + "?reffered_by=" + @invitation.id.to_s %>

Как вы думаете, они так делают?

2.) Почему в ссылке есть знак вопроса? (или что-то вроде? reffered_by = почему бы не просто root_url/@invitation.id.to_s) Это что-то связано с маршрутами? это метод get?

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 22 февраля 2011

Я отвечу на вопрос 2:

?в url есть способ передачи параметров.Форма, использующая метод GET, использует этот вид добавления к URL для передачи параметров.URL? Reffered_by = somevalue передает параметр refer_by со значением somevalue.Теперь, если в нашем контроллере нам нужно это значение, мы можем вызвать params[:referred_by], и мы получим значение как «somevalue».Если мы хотим передать более одного параметра, мы можем передать его, используя &.Например,

"#{root_url}?referred_by=#{@invitation.id}&referred_time_stamp=#{Time.now.strftime(%Y%m%d%H%M%S)}"

Теперь мы можем получить доступ к этим параметрам в контроллере как params [: refer_by] и params [: Refer_time_stamp].

Если у вас нет маршрутов или ресурсов, определенных в маршрутах.rb, вы не можете передавать параметры, такие как id, используя "#{root_url}/#{@invitation.id}".Например, когда вы определяете

map.connect ':controller/:action/:id'

в rout.rb, он понимает, что часть, идущая после последней косой черты, является значением параметра id, и мы получим его как params[:id] в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...