Поиск:

Ответ в темуСоздание новой темы Создание опроса
> уникальный Ай-ди! 
:(
    Опции темы
murgancokva
Дата 28.3.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



Привет.
Такачя проблема.. есть приложение quiz типа, вопрос-ответ короче.Сразу скажу приложение не предусматрвиает регистрациию,  мне надо сделать так что я кидаю ссылку юзеру (ссылка выглядит типа как то так localhost:3000/token.. localhost:3000/jhdsffh9834yr5948h), дальше узер мог отвечать на вопрос и все. если он повторно зайдет по ссылке ничего не будетю как это реализвать? Поддталкните на мысль

#мой контроллер
#answer_controller.rb
class AnsweController < ApplicationController

  layout "default"

  $all_questions_archive = Question.count('id')
  $all_questions_active =
Question.find(:all,:conditions=>"enabled=1").count



  def create

  @w1 = rand(9999999)
  @w = Digest::SHA1.hexdigest(@w1.to_s)


        @answers=Hash.new
  questions = Question.find(:all,:conditions=>"enabled=1")
  questions.each do |question|
            if params["answer_"+question.id.to_s]
     @answers[question.id]=params["answer_"+question.id.to_s]
         if
!Answer.create(:question_id=>question.id,:token=>@w,:text=>params["answer_"+question.id.to_s])
      flash[:error]="Can`t create answer!"
     end
            end
  end
  if !flash[:error]
          redirect_to :action=>"pass"
           return false
  end



  end

  def index

     @answers=Hash.new
     @questions = Question.find(:all,:conditions=>"enabled=1")

  end


  def pass
  flash[:notice]="<span id='ty'>Thank you for your answers!</span>"
        render :text=>"", :layout=>"ty"
  end

#вьюха, index.html.erb
<% form_tag :action=>"create" do %>
<table border="0" width="900px" align="center"
style="background:#e1e3e3;
padding-top:10px;padding-left:20px;padding-right:20px;padding-bottom:20px;">
  <% @questions.each_with_index do |question, index| %>
  <tr style="vertical-align:middle; text-align:left;">
    <td width="400px" colspan="2" style="padding-top:10px;">

 <span style="font-size:15px"><%= index+1 %>. <%= question.text
%></span><br>
    <%= text_area_tag "answer_#{question.id}",@answers[question.id],
:cols=>"90", :rows=>"4", :class => 'inputBox' %>
    </td>
  </tr>
  <% end %>
</table>
<table border="0" width="900px" align="center" class="table2">
  <tr>
    <td align="right"><%= submit_tag 'Pass survey &rarr;', :class =>
'submit'%></td>
  </tr>
  <tr>
    <%=h @w %>
  </tr>
</table>
<% end %>

PM MAIL   Вверх
DeTeam
Дата 28.3.2011, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



То, что нужно - похоже на механизм token'ов.

1. При создании записи ей сопоставляется некоторый ключ - token(можно отдельную табличку сделать)
2. При просмотре идет поиск записи по token'у, отображение и удаление token'а из базы

Я бы сделал так

Questions has_many Tokens (если правильно понял, что 1 token на каждый вопрос для каждого юзера)
PM MAIL WWW ICQ Jabber   Вверх
murgancokva
Дата 29.3.2011, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 23.2.2011

Репутация: нет
Всего: нет



Дадда именно это. 
Согласен с вами.

А такой вопрос еще как в урл вывести токен? и если неверный выдать ошибку?
PM MAIL   Вверх
DeTeam
Дата 29.3.2011, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



для этого нужно сделать в routes строчку для переводу в нужный контроллер а-ля


Код

map.connect 'questions/:token', :contorller => "questions", :action => "show"


там  же добавить:

Код

def show
  if params[:token]
    # тут поиск токена, если не найден - render страницы с ошибкой, найден - удалить
    token = Token.find_by_code(params[:token])
    @question = token.question
    token.delete
  else
    # тут обычный код
    @question = Question.find(params[:id])
  end
  # тут отображение вопроса
end


Как-то так, я бы делал
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.1315 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.