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.erb
的form_for
应该有以下选项:remote(这使得表单通过ajax提交)和:format(这要求响应在JavaScript中),例如:
<%= form_for event, :remote => true, :format => :js do |f| %>