Jquery Rails 3.0.x AJAX问题
这可能是一个非常简单的问题。我是Rails新手,很难弄明白一些我确信是琐碎的事情。我有一个到“Show”的简单链接,它是远程的,效果很好。然而,一旦我点击一个远程链接,并且内容显示在我的部分中/从我的部分中,我似乎无法通过再次点击另一个链接来更新该内容。我的服务器日志显示了正在进行的正确调用,因此我相信我在回调时一定出了问题。也许这与我的部分任务中的“本地人”任务有关。为了更好地理解,这里是我的代码 application.jsJquery Rails 3.0.x AJAX问题,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,这可能是一个非常简单的问题。我是Rails新手,很难弄明白一些我确信是琐碎的事情。我有一个到“Show”的简单链接,它是远程的,效果很好。然而,一旦我点击一个远程链接,并且内容显示在我的部分中/从我的部分中,我似乎无法通过再次点击另一个链接来更新该内容。我的服务器日志显示了正在进行的正确调用,因此我相信我在回调时一定出了问题。也许这与我的部分任务中的“本地人”任务有关。为了更好地理解,这里是我的代码 application.js $(function() { $("#showreqs a
$(function() {
$("#showreqs a").live("click", function() {
$.getScript(this.href);
return false;
});
});
_showreq.html.erb(证明概念非常简单)
show.js.erb
$("#showreq").replaceWith("<%= escape_javascript(render :partial => 'showreq', :locals => { :project => @project}) %>")
$(“#showreq”).replace为(“'showreq',:locals=>{:project=>@project})%>”)
projects.html.erb(唯一重要的部分)
姓名:
所有者:“genForm\u dropBox”%>
-业主:-
“显示”,:远程=>true%>
|
:delete,:confirm=>“确定吗?”,:title=>“delete”%>
projectscontroller(非常难看,可以清理)
class ProjectsController
如果您需要任何其他代码,如routes,请告诉我,但我假设我的routes和其他一切都可以,因为这在第一次单击“show”链接时起作用。您应该使用
$('#showreq').html()
overreplacetwith
,发生的情况是#showreq id被覆盖,因为它存在于部分之外您能显示showreq部分吗replaceWith
将替换整个节点,如果#showreq元素在partial之外,它将被覆盖,并且在第一次加载后不再存在。showreq partial是_mypartial.html.erb,我现在将对其进行编辑以使其更清晰。哦,你说我基本上是在更换我倾向于重复使用的容器。这是有道理的,让我确定一下。很抱歉打扰您,我只是在学习,结果我犯了一个非rails错误。谢谢,againI替换了.replaceWith.html,效果很好。谢谢我希望我能给你打勾。
$("#showreq").replaceWith("<%= escape_javascript(render :partial => 'showreq', :locals => { :project => @project}) %>")
<div id="showreqs">
<%= form_for(@project) do |f| %>
<%= render 'shared/error_messages' %>
<p>
Name: <%= f.text_field :name %>
Owner: <%= f.select :user_id, options_from_collection_for_select(@users, 'id', 'name'), :class => 'genForm_dropBox' %>
<%= f.submit "Create Project" %>
</p>
<% end %>
<ol>
<% @projects.each do |t| %>
<li>
<%= t.name %> - Owner: <%= t.user.name %> -
<%= link_to "Show", t, :action => "show", :remote => true %>
|
<%= link_to "delete", t, :method => :delete, :confirm => "You sure?", :title => "Delete" %>
</li>
<% end %>
</ol>
</div>
class ProjectsController < ApplicationController
def index
@title = "Requirements"
@users = User.order("created_at").all
@project = Project.new
@projects = Project.all
end
def show
@users = User.order("created_at").all
@project = Project.find(params[:id])
@projects = Project.all
end
def create
@project = Project.new(params[:project])
if (defined?(@project_e)).nil?
@project_e = Project.new(params[:project])
end
if @project.save
flash[:success] = "Successfully created a Project."
redirect_to projects_path
else
flash[:error] = "You made some errors"
redirect_to projects_path
end
end
def update
@project = Project.find(params[:id])
if @user.update_attributes(params[:user])
flash[:success] = "Project updated."
redirect_to projects_path
else
flash[:error] = "You made some errors"
redirect_to projects_path
end
end
def destroy
Project.find(params[:id]).destroy
flash[:success] = "Project destroyed."
redirect_to projects_path
end
end