Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Jquery Rails 3.0.x AJAX问题_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Jquery Rails 3.0.x AJAX问题

Jquery Rails 3.0.x AJAX问题,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,这可能是一个非常简单的问题。我是Rails新手,很难弄明白一些我确信是琐碎的事情。我有一个到“Show”的简单链接,它是远程的,效果很好。然而,一旦我点击一个远程链接,并且内容显示在我的部分中/从我的部分中,我似乎无法通过再次点击另一个链接来更新该内容。我的服务器日志显示了正在进行的正确调用,因此我相信我在回调时一定出了问题。也许这与我的部分任务中的“本地人”任务有关。为了更好地理解,这里是我的代码 application.js $(function() { $("#showreqs a

这可能是一个非常简单的问题。我是Rails新手,很难弄明白一些我确信是琐碎的事情。我有一个到“Show”的简单链接,它是远程的,效果很好。然而,一旦我点击一个远程链接,并且内容显示在我的部分中/从我的部分中,我似乎无法通过再次点击另一个链接来更新该内容。我的服务器日志显示了正在进行的正确调用,因此我相信我在回调时一定出了问题。也许这与我的部分任务中的“本地人”任务有关。为了更好地理解,这里是我的代码

application.js

$(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()
    over
    replacetwith
    ,发生的情况是#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