Это происходит просто, если вы пытаетесь рассматривать массив как строку:
$arr = array('foo', 'bar');
echo $arr; // Notice: Array to string conversion
$str = 'Something, ' . $arr; // Notice: Array to string conversion
Массив не может быть просто echo
'd или конкатенируется с строкой, потому что результат не определен. PHP будет использовать строку «Array» вместо массива и вызвать уведомление, чтобы указать, что это, вероятно, не то, что было предназначено, и что вы должны проверять свой код здесь. Вероятно, вы захотите что-то вроде этого:
echo $arr[0]; // displays foo
$str = 'Something ' . join(', ', $arr); //displays Something, foo, bar
Или зациклируйте массив:
foreach($arr as $key => $value) {
echo "array $key = $value";
// displays first: array 0 = foo
// displays next: array 1 = bar
}
Если это уведомление появляется где-то, чего вы не ожидаете, это означает переменную, которую вы мысль - это строка, на самом деле это массив. Это означает, что у вас есть ошибка в коде, которая делает эту переменную массивом вместо ожидаемой строки.
Ваша маршрутизация не настраивается для разрешения того маршрута. Принятие Вы используете леса по умолчанию, помещает эту строку прежде map.resources :posts
строка в config/routes.rb:
map.connect "posts/:action", :controller => 'posts', :action => /[a-z]+/i
regex для :action
ограничивает его просто a-z (чтобы не ловить вещи как/posts/1). Это может быть улучшено при необходимости в подчеркиваниях или числах в новых действиях.
Ошибка, которую Вы совершаете, является на самом деле довольно общей.
В основном, направляющие автоматически отображают URL для Ваших лесов. Таким образом, когда Вы создали леса Сообщений, направляющие отображает маршруты URL для него. Одним таким маршрутом является URL для просмотра единственного сообщения: / отправляет / (post_id)
Так, при вводе URL/posts/start, направляющие думает, что Вы говорите "Эй, даете мне, сообщение с идентификатором = запускается. Так направляющие жалуется, что выставочный метод не может найти сообщение с таким идентификатором.
Один быстрый способ зафиксировать это должно удостовериться, что Ваш config/routes.rb имеет маршрут для действия запуска перед маршрутами лесов:
# Route for start action
map.connect '/posts/start', :controller => 'posts', :action => 'start'
# Default mapping of routes for the scaffold
map.resources :posts
Так или иначе, надейтесь, что это помогает.
Я нашел решение моей проблемы в файле routes.rb, где
map.resource :post
я добавил с аргументом коллекции, поэтому он остался таким:
map.resource :post, :collection => { :my_action => :get}
Это работает:
map.resource :post, :collection => { :my_action => :get}