Я просто запускаю приложение rails 3, которое имеет родительскую модель и дочернюю модель (parent has_many: children) .
Я пытаюсь настроить так, чтобы после создания нового родителя пользователь переходил к действию показа этого родителя (/ parent / id). В этом представлении я включил частичные элементы для отображения всех дочерних элементов и форму для создания нового дочернего элемента. После создания нового дочернего элемента пользователь перенаправляется к действию show для родителя, где появится новый дочерний элемент. Все это работает так, как задумано.
Однако, если я попытаюсь проверить поля в новой дочерней форме, все возникающие сообщения об ошибках не появятся в форме (необходимые строки в представлении есть и правильные - вырезаны и вставлены из сгенерированный код скаффолда). Есть ли способ успешно передать эти сообщения об ошибках для дочернего элемента родительскому действию show?
Вот фрагменты соответствующего кода;
С моего родительского контроллера:
def show
@parent = Parent.find(params[:id])
@child = @parent.children.new
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @admission }
end
end
С моего дочернего контроллера: Изначально я использовал fgetcsv () для чтения CSV-файла, но по сравнению с file_get_contents () у меня была серьезная задержка, поэтому я переключился на file_get_contents (). Цикл будет выполняться за считанные секунды, пока я не попытаюсь добавить функцию (я также добавил выражение внутри цикла без функции, чтобы посмотреть, помогает ли это) для создания массива с данными CSV из каждой строки, это это то, что вызывает серьезные задержки во времени анализа! (разница составляет около 30 секунд на основе этого 200-мегабайтного файла, но я думаю, в зависимости от размера файла csv)
Вот код, чтобы вы могли видеть, что я делаю:
$filename = "file.csv";
$content = file_get_contents($filename);
$rows = explode("\n", $content);
foreach ($rows as $data) {
$data = preg_replace("/^\"(.*)\"$/","$1",preg_split("/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/", trim($data))); //THIS IS THE CULPRIT CAUSING SLOW LOADING?!?
}
Выполнение вышеуказанного цикла будет выполняться почти мгновенно без строки:
$data = preg_replace("/^\"(.*)\"$/","$1",preg_split("/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/", trim($data)));
Я также попытался создать функцию, как показано ниже (вне цикла):
function csv_string_to_array($str) {
$expr="/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/";
$results=preg_split($expr,trim($str));
return preg_replace("/^\"(.*)\"$/","$1",$results);
}
и вызвать функцию вместо одного лайнера:
$data = csv_string_to_array($data);
И снова безуспешно: {printf ("привет, доброе утро \ п"); возврат 0; } gcc -Wall -g temp.c / opt / langtools / bin / gdb a.out HP gdb 3.3 для PA-RISC 1.1 или 2.0 (...
вот мой пример программы:
#include<stdio.h>
int main()
{
printf("hello good morning \n");
return 0;
}
gcc -Wall -g temp.c
/opt/langtools/bin/gdb a.out
HP gdb 3.3 for PA-RISC 1.1 or 2.0 (narrow), HP-UX 11.00.
Copyright 1986 - 2001 Free Software Foundation, Inc.
Hewlett-Packard Wildebeest 3.3 (based on GDB) is covered by the
GNU General Public License. Type "show copying" to see the conditions to
change it and/or distribute copies. Type "show warranty" for warranty/support.
..
(gdb) b 6
Breakpoint 1 at 0x2b14: file temp.c, line 6.
(gdb) run
Starting program: /oo_dgfqausr/test/dfqwrk4/temp/a.out
Breakpoint 1, main () at temp.c:6
6 printf("hello good morning \n");
(gdb) step
hello good morning
7 return 0;
(gdb)
, как только я пытаюсь войти в функцию printf. Она завершается и возвращается в main. Означает ли это, что в библиотеке shred, в которой определена функция printf, отсутствуют символы отладки? Или я делаю что-то не так?