Dans ma vue formulaire, j'utilise le sélecteur de démarrage bootstrap
<input type="text" value="" placeholder="select date you want to send" class="form-control" name="send_date" id="datetimepicker" />
<script>
$.datetimepicker.setLocale('<%= session[:locale] %>');
$('#datetimepicker').datetimepicker({
minDate: 0,
dayOfWeekStart : 1,
lang:'<%= session[:locale] %>',
startDate: '-0m',
format:'d-m-Y H:i:s',
});
</script>
Dans mon contrôleur SMS:
def send_sms
message = params[:message]
number = params[:number]
send_date = params[:send_date]
format = "%Y-%m-%d %H:%M:%S UTC"
send_date = DateTime.strptime(send_date, format)
SendSmsTimeJob.set(wait_until: send_date).perform_later(number, message)
flash[:success] = "mesaj gitti"
redirect_to current_user
end
Lorsque je soumets le formulaire, il est dit:
ArgumentError in SmsController#send_sms invalid date
Je pense que ce problème est que je ne peux pas convertir la valeur d'entrée en valeur de temps rubis? Comment puis-je surmonter cela?
3 réponses
Changez votre format en ceci.
format = "%d-%m-%Y %H:%M:%S"
Dans votre sélecteur de date, vous formatez votre date en format:'d-m-Y H:i:s'
, ce qui signifie jours-mois-années
Dans votre code rubis, vous le analysez différemment:
format = "%Y-%m-%d %H:%M:%S UTC"
Vous avez d'abord inversé l'ordre des dates: année-mois-jours. Ensuite, vous ajoutez une autre valeur attendue «UTC» qui n'est pas incluse dans la chaîne que vous essayez d'analyser.
Changez votre format en format = "%d-%m-%Y %H:%M:%S"
comme suggéré par Rubysmith
Vous pouvez essayer Date.parse params[:send_date]
à la place.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.