Rails – AJAX用于新建/创建操作

我有一个时间表,其中包含事件部分,以便您可以直接在时间线页面上进行CRUD事件。 我已经让它工作,你可以删除一个事件,删除部分刷新时间线,而不刷新页面。

但我不能让它为新事件工作,或编辑一个。 请有人帮我弄清楚我哪里出错了? 谢谢!

我已经在这里放置了一个新事件的代码,因为我确定在new和delete之间,我可以找出如何对编辑进行排序。

时间表/显示:

"show_timeline" %>
"my_timeline" %>
"new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }, :remote => true %>

时间表/ _new_event.html.erb:

   

prohibited this event from being saved:

current_user.timeline.id %>

[:day, :month, :year], :start_year => 1800 %>

50 %>

"47x4" %>
"1", :checked => false %>
      Please paste a URL here
50 %>

"47x3" %>
"btn btn-success" %>

事件/ create.js.erb:

 $('#new-event').html(' "/timelines/new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) } ) %>'); $('.notice').html("

Event was successfully created.

"); $('.notice').show(300); $('#my-timeline-box').html(' "/timelines/my_timeline" ) %>'); $('#show-timeline').html(' "/timelines/show_timeline" ) %>');

事件控制器:

 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 

render :partial :remote => true选项render :partial不需要时间轴/显示视图中的render :partial

相反, _new_event.html.erbform_for应该有以下选项:remote(这使得表单通过ajax提交)和:format(这要求响应在JavaScript中),例如:

 <%= form_for event, :remote => true, :format => :js do |f| %>