2014-12-24 9 views
1

Я пытаюсь добавить новые объекты с помощью AJAX, но все, что я получаю, - «Не удалось загрузить ресурс: сервер ответил на состояние 500 (Internal Server Error)».Rails ненавязчивый javascript - Не удалось загрузить ресурс

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

Мой characters_controller.rb

class CharactersController < ApplicationController 

def index 
    @characters = Character.all.order("id DESC") 
end 

def create 
    @character = Character.new(params[:character]) 

    if @character.save 
     flash[:notice] = "Successfully created post." 
    end 

    respond_to do |format| 
     format.js 
    end 
end 
end 

index.html.erb

<div class="header"> 
    <p>All Hobbit characters</p> 
</div> 

<div class="characters"> 
    <%= render @characters %> 
</div> 

<%= form_for(Character.new, :remote => true) do |f| %> 
    <div class="field"> 
     <%= f.label :name %><br /> 
     <%= f.text_field :name %> 
    </div> 
    <div class="actions"> 
     <%= f.submit %> 
    </div> 
<% end %> 

create.js.erb

<% if @character.new_record? %> 
    $('input#character_name').effect('highlight', {color: 'red'}); 
<% else %> 
    $('div#characters').append("<%= escape_javascript(render @character) %>"); 
    $('div#<%= dom_id(@character) %>').effect('highlight'); 
<% end %> 

Модель содержит только: имя проверки присутствия

+0

Если вы проверяете войти/development.log, будет более подробную информацию относительно того, что вызвало 500. У вас есть частичный вид на приложение/просмотров/символов/_character.html.erb? – keyzee

+0

Спасибо, лог показывает: ForbiddenAttributesError и строка: @character = Character.new (params [: character]) –

ответ

2

В виде из Rails 4, вы не можете пройти params[:character] непосредственно к методу Character.new. Попробуйте что-то вроде этого:

def create 
    @character = Character.new(character_params) 
    if @character.save 
     flash[:notice] = "Successfully created post." 
    end 
    respond_to do |format| 
     format.js 
    end 
end 

private 

def character_params 
    params.require(:character).permit(:name) 
end 
+0

Спасибо, это сработало. –