28

Tôi đang cố gắng làm cho Javascript hoạt động trong ứng dụng Rails của mình.Quá ít đối số

Tôi muốn có trang chỉ mục cho phép tôi chỉnh sửa các mục riêng lẻ trên trang chỉ mục và sau đó tải lại trang chỉ mục khi chỉnh sửa.

trang index.html.erb tôi trông như thế:

<div id="index"> 
<%= render 'index' %> 
</div> 

Trong index.js.erb của tôi, tôi có:

$('#index').html("<%=j render 'index' %>"); 

và trong holders_controller tôi:

def edit 
    holder = Holder.find(params[:id]) 
end 

def update 
    @holder = Holder.find(params[:id]) 
    if @holder.update_attributes(params[:holder]) 
    format.html { redirect_to holders_path } #, flash[:success] = "holder updated") 
    ## ^---Line 28 in error 
    format.js 
    else 
    render 'edit' 
    end 
end 

Khi tôi tải trang chỉ mục thì tốt. Ngay sau khi nhấp vào nút chỉnh sửa và nó submit form, tôi nhận được như sau:

enter image description here

Nhưng nếu tôi quay trở lại và làm mới các trang chỉ mục, các chỉnh sửa được lưu. Tôi đang làm gì sai?

Trả lời

89

Bạn quên viết responds_to khối:

def update 
    @holder = Holder.find(params[:id]) 
    if @holder.update_attributes(params[:holder]) 
    respond_to do |format| 
     format.html { redirect_to holders_path } #, flash[:success] = "holder updated") 
     format.js 
    end 
    else 
    render 'edit' 
    end 
end 

Nhưng tôi nghi ngờ về index.html.erb của bạn, tôi không nghĩ rằng thực sự sẽ làm việc theo cách bạn nghĩ.

+4

'responds_to do' – clyfe

+0

Phải, cảm ơn. :) – Matzi

+0

@Matzi Tôi đã phải sử dụng 'responds_to do | format |' để làm cho nó hoạt động. –

Các vấn đề liên quan