Как сделать строку кликабельной для просмотра деталей - PullRequest
0 голосов
/ 13 марта 2012

У меня есть список элементов, которые я показываю, и я хочу сделать всю строку кликабельной, но сейчас у меня только первый столбец кликабельный.После того, как строка нажата, я бы хотел увидеть ее на странице покупки билета, где я могу добавить больше деталей, таких как цена билета, количество мест и все такое.Прямо сейчас, когда ссылка нажата, просто выдается ошибка:

--------------------------------
HTTP Status 404 - /tictoc/store/detail/7
type Status report
message /tictoc/store/detail/7
description The requested resource (/tictoc/store/detail/7) is not available.
--------------------------------

Вот контроллер.Я добавил подробную информацию, где я пытаюсь переслать страницу для сохранения / покупки.Я предполагаю, что это возьмет идентификатор из params obj и получит отдельные элементы и переместится на страницу покупки.Мне также любопытно, почему log.error не отображается в выводе при выполнении кода.Хотелось бы, чтобы был способ сделать ведение журналов менее неуклюжим в Grails, поскольку включение информации равнозначно огромному количеству журналирования с использованием ошибок, что казалось наименее раздражающим вариантом.

package tictoc
import tictoc.Event 
class StoreController {
    Event event
    static defaultAction = "activeEvents"
    def show = {
        log.error 'exec activeEvents'
        activeEvents()
    }

    def activeEvents = {
        log.error 'exec activeEvents'

        def max    = Math.min(params.int('max', 5), 100);
        def offset = params.offset?.toInteger() ?: 0
        def total =  Event.count()
        def eventList = Event.list(max: params.max, offset: params.offset)

        return [events:eventList, 
                       totalEvents:total,
                       active:params.active]                  
    }

    def detail = {
        log.error 'exec detail'
        def eventId = params.id
        log.error 'eventId:' + eventId
        render(view: "buy", model: [event: eventId])
    }

    def list = {
        params.max = Math.min(params.int('max', 25), 100);
        params.offset = params.int('offset', 0)
        params.sort = params.sort ?: "name";
        params.order = params.order ?: "asc";
        return [ myList: DomainObject.list(params) ]
    }
}

Вот show.gsp, где я размещаю ссылку на элементы, по которым пользователи хотят щелкнуть, чтобы купить / забронировать билеты.Хотелось бы сделать всю строку кликабельной, а не только первый столбец.Не уверен, сколько еще нужно описания, но этот процесс отправки утомителен, поэтому я добавляю больше подробностей просто для отправки.чем заглушка, но я хочу добавить кнопку покупки, которая попытается добавить этот билет в какую-то корзину и разрешить оплату после завершения всех покупок:

<%@ page import="tictoc.Store" %>
<!doctype html>
<html>
    <head>
        <meta name="layout" content="main">
        <g:set var="entityName" value="${message(code: 'store.label', default: 'Store')}" />
        <title><g:message code="default.show.label" args="[entityName]" /></title>
    </head>
    <body>
        <h1> Ticket Store </h1>
        <table border=0 class="eventsTable">
            <tr>
                <th>Event</th>
                <th>Start </th>
                <th>End </th>
                <th>Description</th>
            </tr>
            <tr>
                <td>${event.name}</td>
                <td><g:formatDate format="MM/dd/yyyy" date="${event.startDate}"/></td>
                <td><g:formatDate format="MM/dd/yyyy" date="${event.endDate}"/></td>
                <td>${event.desc}</td>
            </tr>
        </table>

        BUY TICKET
    </body>
</html>

1 Ответ

0 голосов
/ 13 марта 2012

Чтобы сделать строку кликабельной, вам, вероятно, потребуется использовать JavaScript. Вот непроверенный пример jquery:

<tr class="clickable" data-id="${event.id}">
  ...
</tr>

$(".clickable").on("click", function(e) {
   e.preventDefault();
   window.location = "/store/detail/" + $(this).data("id");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...