Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails—使用AJAX时刷新页面而不是部分页面_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Javascript Rails—使用AJAX时刷新页面而不是部分页面

Javascript Rails—使用AJAX时刷新页面而不是部分页面,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,可能重复: 我有一个时间表,上面有事件的部分,所以你可以直接在时间表上对事件进行CRUD。我已经让delete部分正常工作,这样每次删除事件时delete partial和timeline都会刷新。但是,当创建新事件时,我无法使其工作。整个页面将刷新,而不是刷新表单和时间线 我想这和控制器有关?但我似乎无法修复它。任何帮助都将不胜感激,谢谢:0) 事件控制器: def create @event = Event.new(params[:event]) respond_to d

可能重复:

我有一个时间表,上面有事件的部分,所以你可以直接在时间表上对事件进行CRUD。我已经让delete部分正常工作,这样每次删除事件时delete partial和timeline都会刷新。但是,当创建新事件时,我无法使其工作。整个页面将刷新,而不是刷新表单和时间线

我想这和控制器有关?但我似乎无法修复它。任何帮助都将不胜感激,谢谢:0)

事件控制器:

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
时间表/节目:

<div id="new-event">
        <%= render :partial => "new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) }, :remote => true %>
    </div>

“new_event”,:locals=>{:event=>event.new(:timeline_id=>@timeline.id)},:remote=>true%>
时间线/新事件:

<br />
<h2>Add an event</h2>
<h4>Fill in the form and click 'Create Event' to add a new event to the timeline.</h4>

<%= 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 %>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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", :remote => true  %>
  </div>
<% end %>

添加一个事件 填写表格并单击“创建事件”将新事件添加到时间线。 禁止保存此事件:
当前_user.timeline.id%>
[:天、月、年],:开始\年=>1800%>
50 %>
“47x4”%> “1”,:选中=>false%> 请在此处粘贴URL
50 %>
“47x3”%> “btn btn成功”,远程=>true%>
事件/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" ) %>');
$('#new event').html('/timeline/new#event',:locals=>{:event=>event.new(:timeline#id=>@timeline.id)})%>');
$('.notice').html(“事件已成功创建。

”; $('notice')。show(300); $(“#我的时间线框”).html(“/timeline/my#u timeline”)%>”; $(“#显示时间线”).html(“/timeline/show#u timeline”)%>”;
(下面两行是刷新时间线本身)

更新:

以下是错误消息:

Started POST "/events" for 127.0.0.1 at 2012-10-16 14:52:37 +0100
Processing by EventsController#create as JS
  Parameters: {"utf8"=>"V", "authenticity_token"=>"i8oiRI7rOLsfb5o45QCK0te/hAsWv
BMTqpxU9KrbmNA=", "event"=>{"timeline_id"=>"1", "start_date(3i)"=>"16", "start_d
ate(2i)"=>"10", "start_date(1i)"=>"2012", "headline"=>"", "text"=>"", "media"=>"
", "caption"=>""}, "commit"=>"Create Event"}
  ←[1m←[35m (0.0ms)←[0m  begin transaction
  ←[1m←[36mSQL (5.0ms)←[0m  ←[1mINSERT INTO "events" ("caption", "created_at", "
credit", "end_date", "headline", "media", "start_date", "text", "thumbnail", "ti
meline_id", "updated_at") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)←[0m  [["capti
on", ""], ["created_at", Tue, 16 Oct 2012 13:52:37 UTC +00:00], ["credit", nil],
 ["end_date", nil], ["headline", ""], ["media", ""], ["start_date", Tue, 16 Oct
2012], ["text", ""], ["thumbnail", nil], ["timeline_id", 1], ["updated_at", Tue,
 16 Oct 2012 13:52:37 UTC +00:00]]
  ←[1m←[35m (88.0ms)←[0m  commit transaction
  Rendered events/create.js.erb (99.0ms)
Completed 500 Internal Server Error in 617ms

ActionView::Template::Error (Called id for nil, which would mistakenly be 4 -- i
f you really wanted the id of nil, use object_id):
    1: $('#new-event').html('<%= escape_javascript( render :partial => "/timelin
es/new_event", :locals => { :event => Event.new(:timeline_id=>@timeline.id) } )
%>');
    2: $('.notice').html("<p>Event was successfully created.</p>");
    3: $('.notice').show(300);
    4: $('#my-timeline-box').html('<%= escape_javascript( render :partial => "/t
imelines/my_timeline" ) %>');
  app/views/events/create.js.erb:1:in `_app_views_events_create_js_erb___8626901
43_20024148'
  app/controllers/events_controller.rb:59:in `create'


  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action_d
ispatch/middleware/templates/rescues/_trace.erb (5.0ms)
  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action_d
ispatch/middleware/templates/rescues/_request_and_response.erb (2.0ms)
  Rendered C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action_d
ispatch/middleware/templates/rescues/template_error.erb within rescues/layout (1
000.1ms)
2012年10月16日14:52:37+0100时,127.0.0.1的“/code>开始发布事件” 由EventsController处理#创建为JS 参数:{“utf8”=>“V”,“真实性令牌”=>“i8oiRI7rOLsfb5o45QCK0te/hAsWv BMTqpxU9KrbmNA=“,”事件“=>{”时间线id“=>“1”,“开始日期(3i)”=>“16”,“开始日期” ate(2i)“开始日期(1i)”=>“2012年”、“标题”=>、“文本”=>、“媒体”=>” “,”标题“=>”},“提交”=>“创建事件”} ←[1m←[35米(0.0毫秒)←[0m开始交易 ←[1m←[36mSQL(5.0ms)←[0m←[1在“事件”中插入(“标题”、“创建时间”) 信用、结束日期、标题、媒体、开始日期、文本、缩略图、ti meline_id“,“更新的_at”)值(?,,,,,,,,,,,,,,?)←[0m[[”船长 在“,”],[“创建时间”,2012年10月16日星期二13:52:37 UTC+00:00],“信用”,无], [“结束日期”,无],“标题”,“媒体”,“开始日期”,10月16日星期二 2012年,“文本”,“缩略图”,无”,“时间线id”,1”,“更新时间”,周二, 2012年10月16日13:52:37 UTC+00:00]] ←[1m←[35米(88.0毫秒)←[0m提交事务 渲染事件/create.js.erb(99.0ms) 在617毫秒内完成500个内部服务器错误 ActionView::Template::Error(为nil调用id,它将错误地为4--i 如果您确实想要nil的id,请使用object_id): 1:$(“#新事件”).html(“”/timelin) es/new_event“,:locals=>{:event=>event.new(:timeline_id=>@timeline.id)}) %>'); 2:$('.notice').html(“事件已成功创建。

”); 3:$('notice')。show(300); 4:$(“#我的时间线框”).html(“”/t imelines/my_timeline“%>”; app/views/events/create.js.erb:1:in`\u app\u views\u events\u create\u js\u erb\u 8626901 43_20024148' app/controllers/events_controller.rb:59:in'create' 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action\u d ispatch/middleware/templates/rescues/_trace.erb(5.0ms) 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action\u d ispatch/middleware/templates/rescues/_request_和_response.erb(2.0ms) 呈现C:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-3.2.4.rc1/lib/action\u d 救援/布局中的ispatch/middleware/templates/rescues/template_error.erb(1 000.1ms)
您在提交按钮上有
:remote=>true
。这是不正确的。它应该在表单上:

<%= form_for(event, :remote => true) do |f| %>
true)do | f |%>

您尚未在控制器代码中初始化@timeline。因此,您将得到一个nil操作

因此,请输入您的创建代码:

@timeline = current_user.timeline

这会阻止页面现在刷新,但我现在在日志中发现一个错误。我已将其粘贴到问题中以使其更易于阅读。为什么id没有通过?谢谢。create.js.erb期望
@timeline
,但在控制器的
create
方法中,您没有定义
@timeline
。这很好,它是w现在开始工作,谢谢你的帮助。对后代来说:你为什么不使用timeline.events.new而不是摆弄手册id…可读性更好。我会看看如何做,谢谢你的提示。