Ruby on rails 在post上更新AJAX提要
我完成了Hartl的Rails教程,现在正努力学习更多。我已经尝试在提交后添加提要更新功能。除了一个例外,这一切都很好。出于某种原因,每次我单击submit按钮时,都会向数据库中添加两个条目(重复项)。基本上,如果我查看终端中的服务器对话框,我会看到以下两种情况:Ruby on rails 在post上更新AJAX提要,ruby-on-rails,Ruby On Rails,我完成了Hartl的Rails教程,现在正努力学习更多。我已经尝试在提交后添加提要更新功能。除了一个例外,这一切都很好。出于某种原因,每次我单击submit按钮时,都会向数据库中添加两个条目(重复项)。基本上,如果我查看终端中的服务器对话框,我会看到以下两种情况: Started POST "/microposts" for 127.0.0.1 at 2012-02-07 22:17:41 +1300 Creating scope :from_users_followed_by. Overwri
Started POST "/microposts" for 127.0.0.1 at 2012-02-07 22:17:41 +1300
Creating scope :from_users_followed_by. Overwriting existing method Micropost.from_users_followed_by.
Processing by MicropostsController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"p2pZx4VtIOSnywyVrXnk0vOpI5WdGVeuhLTfEaXmT6o=", "micropost"=>{"content"=>"This is a test post!"}, "commit"=>"Submit"}
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
(0.1ms) BEGIN
SQL (0.4ms) INSERT INTO "microposts" ("content", "created_at", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["content", "This is a test post!"], ["created_at", Tue, 07 Feb 2012 09:17:42 UTC +00:00], ["updated_at", Tue, 07 Feb 2012 09:17:42 UTC +00:00], ["user_id", 19]]
(13.6ms) COMMIT
(0.5ms) SELECT COUNT(*) FROM "microposts" WHERE (user_id IN (SELECT followed_id FROM relationships
WHERE follower_id = 19) OR user_id = 19)
Micropost Load (0.5ms) SELECT "microposts".* FROM "microposts" WHERE (user_id IN (SELECT followed_id FROM relationships
WHERE follower_id = 19) OR user_id = 19) ORDER BY microposts.created_at DESC LIMIT 5 OFFSET 0
CACHE (0.0ms) SELECT COUNT(*) FROM "microposts" WHERE (user_id IN (SELECT followed_id FROM relationships
WHERE follower_id = 19) OR user_id = 19)
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = 19 LIMIT 1
Rendered shared/_feed_item.html.erb (11.7ms)
Rendered shared/_feed.html.erb (20.4ms)
(0.3ms) SELECT COUNT(*) FROM "microposts" WHERE "microposts"."user_id" = 19
Rendered microposts/create.js.erb (23.3ms)
Completed 200 OK in 103ms (Views: 26.9ms | ActiveRecord: 23.4ms)
这在我的microposts控制器中:
def create
@micropost = current_user.microposts.build(params[:micropost])
if
@micropost.save!
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
end
end
这是我的create.js.erb
$(".ajaxreloadposts").html("<%= escape_javascript(render('shared/feed')) %>")
$(“.ajaxreloadposts”).html(“”)
这是我的家。html.erb
<% if signed_in? %>
<table class="front" summary="For signed-in users">
<tr>
<td class="main">
<h1 class="micropost">Create Post:</h1>
<%= render 'shared/micropost_form' %>
<span class="ajaxreloadposts">
<%= render 'shared/feed' %>
</span>
</td>
<td class="sidebar round">
<%= render 'shared/user_info' %>
<%= render 'shared/stats' %>
</td>
</tr>
</table>
<% else %>
创建帖子:
最后,这是我的_feed部分
<% @feed_items = current_user.feed.paginate(:page => params[:page], :per_page => 5) %>
<% unless @feed_items.empty? %>
<table class="microposts" summary="User microposts">
<%= render :partial => 'shared/feed_item', :collection => @feed_items %>
</table>
<div class="digg_pagination">
<%= will_paginate @feed_items %>
</div>
<% end %>
params[:page],:per_page=>5)%>
“共享/feed\u items',:collection=>@feed\u items%>
有趣的是,分页按钮在AJAX更新中也会错误地重新加载。。并采用
microspots?=
的形式,而不是所需的格式page?=
,但这完全是另一回事。似乎ajax请求被触发了两次。检查应用程序js,确保只包含一次js。不需要树,而需要明确的js。谢谢,我今晚回家后会检查这个。我恐怕弄不清楚。我的application.rb文件说://=require jquery//=require jquery\u ujs/=require\u tree
删除//=require\u tree,然后手动要求所有的js,就像在资产中有util.js一样,然后要求它,就像//=require util.js一样