Я создаю простой сценарий голосования с помощью Laravel, пока что все хорошо … но я застреваю при рендеринге подходящего представления без перезагрузки страницы. Это простая проблема, но я не могу заставить ее работать:
Это мой код маршрута / контроллера:
Route::post('poll/vote', function() {
$poll = Poll::findOrFail(Input::get('id'));
$pollOption = PollOption::findOrFail(Input::get('option_id'));
$pollOption->increment('votes');
$cookie = Cookie::make('poll_vote_' . $poll->id, true); //User voted on this poll, create a cookie
$view = View::make('includes.poll', ['poll' => $poll])->render();
$response = Response::json(['view' => $view]);
$response->headers->setCookie($cookie);
return $response;
});
JQuery (AJAX), который не так важен, потому что он работает отлично:
$('.poll-option').click(function(e) {
e.preventDefault();
var form = $(this).parents('form'),
url = form.attr('action');
$.ajax({
type: 'POST',
url: url,
data: form.serialize(),
dataType: 'json'
}).done(function(view) {
$('#poll .content').html(view['poll']).find('.loading').remove();
}).fail(function() {
alert('Er is iets fout gegaan tijdens het antwoorden van de poll');
});
});
И тогда есть мой взгляд
<div class="question">{{{ $poll->question }}}</div>
@if(Cookie::has('poll_vote_' . $poll->id))
<ul class="list small votes">
@foreach($poll->options as $option)
<li>
<span class="light">{{ $option->getVotePercentage() }}</span> {{{ $option->title }}}
<div class="percentage-bar-container">
<div class="percentage-bar" style="width: {{ $option->getVotePercentage() }}"></div>
</div>
</li>
@endforeach
</ul>
@else
<ul class="list small options">
{{ Form::open(['url' => 'poll/vote']) }}
{{ Form::hidden('id', $poll->id) }}
@foreach($poll->options as $option)
<li>{{ Form::radio('option_id', $option->id, null, ['class' => 'poll-option']) }} {{{ $option->title }}}</li>
@endforeach
{{ Form::close() }}
</ul>
@endif
В представлении я проверяю, установлен ли cookie. Если это так, то отобразите голоса (результаты), в противном случае отобразите параметры, по которым можно проголосовать. Теперь, если пользователь голосует за опцию, представление по-прежнему показывает опции, потому что страница не обновлена (поэтому Cookie еще не установлен). Как я могу исправить эту проблему или создать обходной путь?
Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …