помощь с рельсами рендер действий против маршрутизации - PullRequest
0 голосов
/ 30 октября 2009

Я использовал какой-то пример обрезки изображения, который нашел в Интернете, и теперь я запутался. На самом деле в моем контроллере нет метода «кадрирования». Вместо этого (следуя инструкции) я поставил

 render :action => 'cropping', :layout=> "admin"

В моем методе создания. Это делает страницу представлением под названием cropping.html.erb. Это прекрасно работает, но я не знаю, как связать или отобразить эту страницу в противном случае, например, если я хочу нажать на URL-адрес напрямую или нажать кнопку, чтобы повторно обрезать изображение. Должен ли я на самом деле создать метод обрезки в моем контроллере и подключить его через маршрутизацию, если я хочу иметь возможность сделать это, или в моем представлении есть способ связать с тем же местом, где отображается действие обрезки?

Извините за путаницу :) Не помогает, что в первой версии учебника был метод обрезки, и он удалил его !! Любое объяснение того, почему один метод лучше другого, было бы замечательно. Спасибо !!

Ответы [ 2 ]

0 голосов
/ 30 октября 2009

В вашем случае вы обычно называете файл create.html.erb, в котором rails будет искать этот файл по умолчанию. Написание кода вроде:

render: action => 'viewname'

обычно происходит, если вы хотите визуализировать один файл в одном случае, а другой - в другом.

0 голосов
/ 30 октября 2009

Лучший способ сделать это зависит от того, как вы собираетесь использовать шаблон обрезки, и от соответствующей логики контроллера. Вы найдете полезным прочитать документацию , прежде чем продолжить.

  • Если вы когда-либо собираетесь использовать шаблон обрезки только одним способом. С той же логикой контроллера, которая не зависит от ссылающегося действия (как в; Не является частью представления формы). Тогда вы должны определить новое действие и маршрут. Вы сами выбираете, хотите ли вы создать именованный маршрут или просто добавить новый в определение ресурса в route.rb

    В зависимости от того, как вы определяете свой маршрут, вы можете сделать link_to "Cropping", cropping_url

  • Если вы собираетесь рендерить его с нескольких контроллеров, каждый из которых требует различной подготовки перед рендерингом шаблона.

    render :template => 'path/template_name' 
    

    Где путь - это относительный путь от TEMPLATE_ROOT (RAILS_ROOT/app/views, если не указано иное), а имя шаблона - это имя файла без конечного .html.erb / .rhtml

  • Если вы хотите визуализировать кадрирование как часть другого представления, вы можете сделать его частичным.

    Чтобы сделать его частичным, просто переименуйте файл в _cropping.html.erb. Теперь он может быть вызван из любого вида с

    <%=render :partial => 'path/partial_name' %>
    

    Опять же, путь - это путь, связанный с TEMPLATE_ROOT, к вашему частичному. А имя_частицы - это имя файла части, после пропуска начального подчеркивания и конечного .html.erb или .rhtml.

Примечание. В любом из решений, включающих путь к шаблону, путь может быть пропущен, если вызывающий контроллер совпадает с путем. То есть: если путь к шаблону 'users / cropping.html.erb' вызывается из UsersController.

...