Граали проходят парамы и генерируют форму

У меня есть один доменный класс со следующими свойствами

package rentme

class Car {

    String brand
    String model
    String fuelType
    BigDecimal pricePerDay
    String busy

    static constraints = {
        brand(inList:["AUDI", "BMW", "MERCEDES", "NISSAN", "HONDA", "FORD"])
        model()
        fuelType(inList:["FUEL", "DIESEL", "AUTOGAS"])
        pricePerDay(min:0.0, max:1000.0)
        busy(inList:["YES", "NO"])

    }
}

У меня есть автомобиль / индекс.gsp, где перечислены мои записи

<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main" />
        <g:set var="entityName" value="${message(code: 'car.label', default: 'Car')}" />
        <title><g:message code="default.list.label" args="[entityName]" /></title>
    </head>
    <body>
        <a href="#list-car" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
        <div class="nav" role="navigation">
            <ul>
                <li><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
                <li><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]" /></g:link></li>
            </ul>
        </div>
        <div id="list-car" class="content scaffold-list" role="main">
            <h1><g:message code="default.list.label" args="[entityName]" /></h1>
            <g:if test="${flash.message}">
                <div class="message" role="status">${flash.message}</div>
            </g:if>
            <f:table collection="${carList}" />


            <div class="pagination">
                <g:paginate total="${carCount ?: 0}" />
            </div>
        </div>
    </body>
</html>

Вот я хочу добавить к каждой записи автомобиля «кнопка заказа» и при нажатии на кнопку заказа я хочу, чтобы эта кнопка создаст некоторую форму заказа с парами выбранной записи так, в сгенерированной форме будут данные выбранной записи и дополнительные поля для клиента.

1 ответ

  1. вам нужно будет повторить вручную в каждом элементе списка вашего результата. Затем вы добавите нужную кнопку при нажатии на нее, это может быть прямая ссылка или jquery

    <g:link controller="mycontroller" action="myAction" 
    params="${[id:instance.id, whatever:instance.whatever]}">click me</a>
    

    или как показано на той странице, которая связывается с главной страницей ссылки могут быть

    <span id="myId" data-id="${instance.id}">Click Me</a>
    <div id="results">
     <!-- results will end up in here from ajax on same page -->
     <!-- you could look into modal popup or jquery dialog box to load in form -->
      <!-- as a pop up page instead -->
    </div>
    <script>
        $(function() {  
        $('#myId).on('click',function() {
           var myId=$(this).attr('data-id');
           var url="${createLink(controller: 'myController',action:'doSomething')}";
            $.ajax({
                cache:false,            
                timeout:1000,
                type: 'POST',
                url: url,
                data:{id:myId},
                success: function(data){
                    $('#results').html(data);
                }
            });
        })
    })
    </script>
    

    Похоже, здесь есть чему поучиться