2011-08-11 117 views
0

這可能是一個非常簡單的問題。我是Rails的新手,並且很難弄清楚我確定的事情是微不足道的。我有一個簡單的link_to「顯示」,它很偏遠,效果很好。但是,一旦我點擊一個遠程鏈接,並顯示內容/從我的部分我似乎無法通過再次點擊另一個鏈接更新該內容。我的服務器日誌顯示正在進行的調用,所以我相信在回調中我一定會出錯。也許這與我的部分內容有關:本地人的任務。更好地瞭解這裏是我的代碼...Rails 3.0.x AJAX問題

的application.js

$(function() { 
    $("#showreqs a").live("click", function() { 
     $.getScript(this.href); 
     return false; 
    }); 
}); 

_showreq.html.erb(很簡單的證明概念)

<%= @project.name %> 

show.js.erb

$("#showreq").replaceWith("<%= escape_javascript(render :partial => 'showreq', :locals => { :project => @project}) %>") 

projects.html.erb(僅限重要部分)

<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> 

projectscontroller(非常醜陋,將清理)

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 

如果您需要任何其他代碼,如路線讓我知道,但我認爲我的路線和一切是罰款,因爲這樣做作品時,「秀」首先點擊鏈接。

+0

外面是#showreq ID被覆蓋,你可以顯示showreq部分? 'replaceWith'將替換整個節點,如果#showreq元素在局部之外,它將被覆蓋並在第一次加載後不再存在。 – numbers1311407

+0

showreq部分是_mypartial.html.erb編輯它現在更清楚。 OOOhhhhhhh所以你說我基本上取代了我傾向於重複使用的容器。這是有道理的讓我確定。對不起,麻煩你,我只是在學習,結果證明我犯了一個非導軌錯誤。再次感謝 – Maurycy

+0

我用.html替換了.replaceWith,它工作正常。謝謝!我希望我能給你一個複選標記。 – Maurycy

回答

1

您應該使用$('#showreq').html()超過replaceWith,如發生了什麼,因爲它存在於局部