2013-09-29 5 views
2

У меня есть контроллер RESTful, который я пытаюсь получить, чтобы получить мой аякс, и я продолжаю получать внутреннюю ошибку 500, метод контроллера не найден.Laravel 4: ajax not routing to controller action

В routes.php у меня есть:

Route::controller('friends', 'FriendController'); 

В контроллере у меня есть:

class FriendController extends Controller{ 
    public function postAdd(){ 
     $user_id = Auth::user()->id; 
     $friend_id = Input::get('id'); 
     $friend = new Friend; 
     $friend->user_id = $user_id; 
     $friend->friend_id = $friend_id; 
     if($friend->save()){ 
      return Response::json(array('status' => 'OK')); 
     }else{ 
      return Response::json(array('status' => 'FAIL')); 
     } 
    } 
} 

и Ajax является:

$.ajax({ 
       url : "{{URL::action('[email protected]')}}", 
       type : "POST", 
       data : { id : $(this).attr('val')} 
      }) 
      .done(function(json){ 
       console.log(json); 
      }); 

в результате http://localhost/velser/friends/Add для URL ,

Любая идея, где я ошибаюсь? И если вы видите какие-либо другие проблемы с кодом, сообщите мне, пожалуйста! Я все еще привык к laravel 4, поэтому у меня все еще есть много вопросов, которые я считаю.

EDIT: Includin модель Friend сейчас тоже:

class Friend extends Eloquent{ 
    protected $table = 'friends'; 
} 
+0

похоже, что вам нужно добавить вручную 'Route :: post ('friends/Add', 'FriendController @ postAdd');', потому что по умолчанию laravel создает только маршрут для друзей @ через запрос POST для контроллера RESTful. Выполните «php artisan routes», чтобы увидеть все созданные вами маршруты. Посмотрите также связанную тему http://stackoverflow.com/questions/18402298/laravel-4-defining-restful-controllers –

ответ

0

вопрос было трудно найти, но когда-то нашел легко исправить. Если бы я упаковал $friend->save() в блок catch try раньше, я бы нашел его очень быстро. У меня не было столбцов updated_at и created_at в таблице. Но страница с ошибкой laravel не сказала мне этого и просто потерпела неудачу. В будущем, я буду обернуть вещи в блок catch try, чтобы найти ответ.

1

Там нет никаких ошибок в коде, протестированные с последним обновлением Laravel. Но вам нужно обновить Laravel Framework. Так бегите,

composer update 

Или,

php composer.phar update 

И убедитесь, что у вас нет контроллера с тем же именем класса модели, как Friend. Затем убедитесь, что у вас есть created_at и updated_at полей в вашем столе. Если вы не хотите использовать эти поля, просто добавьте эту строку в вашей модели,

public $timestamps = false;