user3714598
user3714598

Reputation: 1783

grails : how to pass params in remoteFunction

I want to a param using remoteFunction of grails.

HTML

 <table class="table table-hover table-bordered" id="profittable">
                        <thead>
                            <tr>
                              <th>Date</th>
                              <th>Profit</th>
                              <th>Delete?</th>
                            </tr>
                        </thead>
                        <tbody> 

                <g:each in="${dailyProfit}" var="dp">
                    <tr onclick="<g:remoteFunction action='edit' params="[date:${dp.date}]"></g:remoteFunction>" >
                        <td><g:formatDate format="yyyy-MM-dd" date="${dp.date}"/></td>
                        <td>
                                                    <g:formatNumber number="${dp.profit}" type="currency" currencyCode="PHP" format="###.##" />
                                                </td>
                                                <td>
                                                    <g:form controller="dailyProfit" action="delete" >
                                                        <g:hiddenField name="date" value="${dp.date.format("yyyy-MM-dd")}" />
                                                        <g:actionSubmit class="delete" value="Delete" >
                                                            <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
                                                        </g:actionSubmit>    
                                                    </g:form>
                                                </td>
                    </tr>
                </g:each>
                        </tbody>
                    </table>

ERROR MESSAGE

URI /SampleGrailsApp/dailyProfit/index Class org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException Message Attribute value quote wasn't closed (action='edit' params="[date:${dp.date}]").

ACTIONS FOR EDIT

The remoteFunction tag is inside every tr of my table. The plan is, if the row is clicked, the edit page will appear

def edit() {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    Date date = format.parse(params.date);
    def dailyProfit = DailyProfit.findByDate(date)
    render view:"edit" , model:[dailyProfit : dailyProfit]
}

 def update() {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    Date date = format.parse(params.date);
    def dailyProfit = DailyProfit.findByDate(date)
    if(dailyProfit){
        dailyProfit.properties = params
        dailyProfit.save(flush:true)
    }
    list() 
}

What is the proper way of passing parameters using remoteFunction tag of grails?

Upvotes: 0

Views: 1652

Answers (2)

praveen_programmer
praveen_programmer

Reputation: 1062

You can do like this .

<tr onclick = "${remoteFunction(
    controller: 'xyz',
    action: 'edit',update:'divId',
    params: [date: dp.date])}" >

Upvotes: 1

Danilo
Danilo

Reputation: 2686

This is also a valid syntax:

<tr onClick="<g:remoteFunction action='edit' params="${[param1: 'value', param2: 0]}"></g:remoteFunction>">.....</tr>

Note that the code will translate into an Ajax call with the parameters you indicate. Being an Ajax call, you wont see the page change.

If you want to send the user to the edit page when the row is clicked one option is the following:

<tr onclick='document.location = "<g:createLink action='edit' params="${[date: dp.date]}"/>" '> ... </tr>

Upvotes: 0

Related Questions