J'ai une chronologie avec les partiels d'événements dessus pour que vous puissiez CRUD événements directement sur la page de la ligne de temps. Je l'ai fonctionné de sorte que vous puissiez supprimer un événement, et les suppressions partielles de suppression avec le scénario, sans actualisation de la page.Rails - AJAX pour une nouvelle action/créer
Mais je ne peux pas le faire fonctionner pour un nouvel événement, ou pour en éditer un. S'il vous plaît quelqu'un peut-il m'aider à comprendre où je vais mal? Merci!
J'ai mis le code pour un nouvel événement ici, car je suis sûr que entre le nouveau et supprimer, je peux travailler sur la façon de trier l'édition.
délais/show:
<div id="show-timeline">
<%= render :partial => "show_timeline" %>
</div>
<div id="my-timeline-box">
<%= render :partial => "my_timeline" %>
</div>
<div id="new-event">
<%= render :partial => "new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }, :remote => true %>
</div>
délais/_new_event.html.erb:
<%= form_for(event) do |f| %>
<% if event.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(event.errors.count, "error") %> prohibited this event from being saved:</h2>
<ul>
<% event.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%=f.hidden_field 'timeline_id', :value => current_user.timeline.id %>
<div class="field">
<%= f.label :date %><br />
<%= f.date_select :start_date, :order => [:day, :month, :year], :start_year => 1800 %>
</div>
<div class="field">
<%= f.label :title %><br />
<%= f.text_field :headline, :size => 50 %>
</div>
<div class="field">
<%= f.label :event_description %><br />
<%= f.text_area :text, :size => "47x4" %>
</div>
<%= check_box_tag "blockCheck", :value => "1", :checked => false %>
<div class="field" id="media_box">
<%= f.label :media %> <span>Please paste a URL here</span><br />
<%= f.text_field :media, :size => 50 %>
</div>
<div class="field">
<%= f.label :media_description %><br />
<%= f.text_area :caption, :size => "47x3" %>
</div>
<div class="actions">
<%= f.submit 'Create Event', :class => "btn btn-success" %>
</div>
<% end %>
événements/create.js.erb:
$('#new-event').html('<%= escape_javascript(render :partial => "/timelines/new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }) %>');
$('.notice').html("<p>Event was successfully created.</p>");
$('.notice').show(300);
$('#my-timeline-box').html('<%= escape_javascript(render :partial => "/timelines/my_timeline") %>');
$('#show-timeline').html('<%= escape_javascript(render :partial => "/timelines/show_timeline") %>');
contrôleur événements:
def new
@event = Event.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @event }
format.js
end
end
def create
@event = Event.new(params[:event])
respond_to do |format|
if @event.save
format.html { redirect_to @event.timeline, notice: 'Event was successfully created.' }
format.json { render json: @event, status: :created, location: @event }
format.js
else
format.html { render action: "new" }
format.json { render json: @event.errors, status: :unprocessable_entity }
format.js
end
end
end
Pouvez-vous préciser ce que vous signifie par vous ne pouvez pas le faire fonctionner? Vous obtenez une erreur dans Rails ou dans le JavaScript? Avez-vous essayé le débogage pour vous assurer que les valeurs correctes sont passées du formulaire au contrôleur? –
Désolé, je voulais dire qu'au lieu de rafraîchir les partiels comme je le veux, la page redirige toujours vers les timelines/1 - c'est-à-dire les rafraîchissements de la page à la place. – ecs
Je suppose que cela signifie que c'est peut-être un problème avec le code dans le contrôleur? – ecs