我是网络开发的新手,所以请牢记这一点。
我正在使用Rails 3.0.10创建我的第一个应用程序
我有一个微博表单,我正在尝试将AJAX实现。
我已正确设置控制器(我相信)并已将:remote => true
添加到微博表格中。
Microposts Controller
def create
@user = User.find(current_user.id)
@micropost = current_user.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Created micropost"
respond_to do |format|
format.html { redirect_to @user }
format.js
end
else
render 'users/show'
end
end
问题出在create.js.erb文件的views / microposts
中作为测试,如果我把
$("#microposts").html("<p>Hello world!</p>")
它按预期工作。
即使我使用实例变量将ruby代码嵌入其中,也可以。
但是,如果我把
$("#microposts").html("<%= render @microposts %> ")
它什么也没做。
事实上,只要我尝试任何rails方法,它就什么都不做。
这些是我的javascript文件:
/javascripts/jquery.js
/javascripts/jquery_ujs.js
/javascripts/jquery.min.js
/javascripts/application.js
任何帮助都会非常感激,我现在已经被困了一段时间。
答案 0 :(得分:2)
您没有在创建操作中加载@microposts(集合)。
所以,你需要通过以下方式设置它:
@microposts = current_user.microposts
但是真的没有必要再做一次DB调用。我建议只使用新项目附加(或预先添加)#microposts元素。类似的东西:
$("#microposts").prepend("<%= escape_javascript(render '_micrpost_item') %>");
该部分应该能够使用create动作中的@micropost对象。
答案 1 :(得分:0)
请改为尝试:
$("#microposts").html("<%= escape_javascript(render @microposts) %> ");