Рендеринг Partials от представления одного контроллера до представления другого контроллера в направляющих

Простое решение для Java:

public boolean isPalindrome(String testString) {
    StringBuffer sb = new StringBuffer(testString);
    String reverseString = sb.reverse().toString();

    if(testString.equalsIgnoreCase(reverseString)) {
        return true;
    else {
        return false;
    }
}
13
задан idmean 6 September 2015 в 18:32
поделиться

3 ответа

Терминология в вашем вопросе немного запуталась. Если вы находитесь в контроллере, и вы хотите выполнить код в другом методе действия в другом контроллере и отобразить его шаблон, вам следует redirect_to это действие. Скажем, другой контроллер называется ContractsController

redirect_to :controller => "contracts", :action => "show_home_page"

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

Например, если шаблон находится в папке для контроллера контрактов.

render :action => "/contracts/show_home_page", :layout=> false

Я думаю, что в этом случае вы на самом деле говорите о частичном, который будет выглядит как

render :partial => "/contracts/show_home_page"

Однако, Я вижу, что вы здесь понимаете, что вы действительно хотите вызвать несколько методов действия для визуализации одной страницы. Это не так. Вам нужно будет настроить объекты, на которые будут ссылаться шаблоны в одном действии. Это одна из причин, по которой большинство разработчиков Rails помещают в модели много кода, поэтому настройка не повторяется для всех контроллеров.

Но есть другой способ ... где проявляется магия JavaScript .

Создайте на своей странице такую ​​функцию:

<script type="text/javascript" language="javascript">    
function load_categories() {
            <%= remote_function(:url => {:controller => "categories", :action => "list"},
                                  :update => "categories")%>
        };
</script>

Если вы вызовете ее при загрузке даже своей страницы, она заменит div на id " категории "с ответом от указанного действия.

Это одна из причин, по которой большинство разработчиков Rails помещают в модели много кода, поэтому настройка не повторяется для всех контроллеров.

Но есть другой способ ... где проявляется магия JavaScript .

Создайте на своей странице такую ​​функцию:

<script type="text/javascript" language="javascript">    
function load_categories() {
            <%= remote_function(:url => {:controller => "categories", :action => "list"},
                                  :update => "categories")%>
        };
</script>

Если вы вызовете ее при загрузке даже своей страницы, она заменит div на id " категории "с ответом от указанного действия.

Это одна из причин, по которой большинство разработчиков Rails помещают в модели много кода, поэтому настройка не повторяется для всех контроллеров.

Но есть другой способ ... где проявляется магия JavaScript .

Создайте на своей странице такую ​​функцию:

<script type="text/javascript" language="javascript">    
function load_categories() {
            <%= remote_function(:url => {:controller => "categories", :action => "list"},
                                  :update => "categories")%>
        };
</script>

Если вы вызовете ее при загрузке даже своей страницы, она заменит div на id " категории "с ответом от указанного действия.

34
ответ дан 1 December 2019 в 19:50
поделиться

I'm not sure I understand your problem statement fully (why this must be done from the view), but I'd say you just call redirect_to from controller A to controller B.

-1
ответ дан 1 December 2019 в 19:50
поделиться

Если вы действительно хотите отрендерить совершенно другое действие (т.е. имитировать запрос, проходящий через весь стек Ruby on Rails), вы можете использовать Webrat (проверьте Скринкаст Webrat здесь)

В традиционных веб-приложениях MVC в этом редко возникает необходимость. Но по моему опыту разработки веб-приложений в стиле SOFEA и микроархитектуры , это становится все более распространенным явлением.

0
ответ дан 1 December 2019 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: