28

Я пытаюсь получить Javascript, работающий в моем приложении Rails.Слишком много аргументов

Я хочу, чтобы моя индексная страница позволяла мне редактировать отдельные элементы на индексной странице, а затем обновлять страницу индекса при редактировании.

Моя index.html.erb страница выглядит следующим образом:

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

В моей index.js.erb у меня есть:

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

и в моем holders_controller:

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 

Когда я загружаю индексную страницу, это нормально. Как только нажать на кнопку редактирования и отправляет форму, я получаю следующее:

enter image description here

Но если я вернусь и обновить страницу индекса, редактирует сохраняются. Что я делаю не так?

ответ

89

Вы забыли написать responds_to блок:

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 

Но я с подозрением о вашем index.html.erb, я не думаю, что будет действительно работать так, как вы думаете.

+4

'replys_to do' – clyfe

+0

Правильно, спасибо. :) – Matzi

+0

@Matzi Мне пришлось использовать 'responses_to do | format |', чтобы заставить его работать. –