2012-07-03 23 views
1

我在軌道上的紅寶石非常新。我遇到了一個問題。我有一個主題列表,在這個列表下面我有一個添加主題的表單。我正在嘗試添加沒有頁面刷新的主題,並在主題列表下方顯示此主題。新添加的主題將插入數據庫,但不會在沒有頁面刷新的列表底部顯示。 這是我的控制器(subject_controller.rb)在軌道上的紅寶石表單提交時不顯示頁面刷新的結果數據

class SubjectController < ApplicationController 
    layout 'standard' 
    def list 
     @subjects = Subject.find(:all) 
    end 
    def show 
     @subject = Subject.find(params[:id]) 
    end 
    def create 
     @subject = Subject.new(params[:subject]) 
     if @subject.save 
      render :partial => 'subject', :object => @subject 
     end 
    end 
end 

這是我的部分文件(_subject.html.erb)

<li id="subject_<%= subject.id %>"> 
<%= link_to subject.name, :action => 'show', :id => subject.id %> 
<%= "(#{subject.books.count})" -%> 
</li> 

這是我的視圖頁面(list.html.erb)

<ul id="subject_list"> 
<% @subjects.each do |c| %> 
<li><%= link_to c.name, :action => 'show', :id => c.id %> 
<%= "(#{c.books.count})" -%></li> 
<% end %> 
</ul> 
<div id="add_subject"> 
<%= form_for(:subject, :url => {:action => 'create'}, 
    :update => "subject_list", :position => :bottom, 
    :html => {:id => 'subject_form'}, :remote => true) do %> 
Name: <%= text_field "subject", "name" %> 
<%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %> 
<% end %> 
</div> 

這裏是我的js文件

function submitForm(){ 
jQuery.ajax({ 
     type: 'POST', 
     //url: "/subject/create", 
     data:jQuery('#subject_form').serialize(), 
     error: function(){ }, 
     success: function(data){ alert(data) }, 
     complete: function(){ } 
     }); 
    return false; 
} 

我使用Ruby 1.9.3和3.2.6軌道

回答

0

,你應該做到以下幾點 -

  1. 在你list.html.erb更換

    <%= submit_tag 'Add', :id => 'create_button', :onClick => 'javascript:submitForm();' %> 
    

<%= submit_tag 'Add', :id => 'create_button' %> 

2.創建一個新的視圖c用下面的內容reate.js.erb -

$("#subject_list").innerHTML += "<%= escape_javascript(render(:partial => 'subject')) %>" 

3.更新您的控制器方法 -

if @subject.save 
     #render :partial => 'subject', :object => @subject 
     respond_to do |format| 
      format.js 
     end 
    end 

4.最後,在你的主題部分使用實例變量「@subject」而不是「主題「並放棄你的js文件。

+0

感謝您的回覆,但它也不工作..... :( –

+0

@Ashish ...非常感謝,親愛的,它現在正在工作:) :) :)。我用你的代碼,並在create.js.erb文件中做了一點改動,它的工作正常。你的幫助表示讚賞 –

+0

很高興幫助 – saihgala

相關問題