Thanks for the help! It seems very obvious in retrospect. I guess I was just expecting a to get warns instead of errors. It&#39;s working well now. Thanks again.<br><br>Now on to the next problem:<br><br>I&#39;m trying to load a jqGrid from json data made via a REST call. But my
grid is just a blank rectangle on the page. Here is my code:<br><br><pre class="prettyprint"><code><span class="tag">&lt;body&gt;</span><span class="pln"><br><br></span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">&quot;tabs&quot;</span><span class="tag">&gt;</span><span class="pln"><br>
    </span><span class="tag">&lt;ul&gt;</span><span class="pln"><br>        </span><span class="tag">&lt;li&gt;&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">&quot;#panel-users&quot;</span><span class="tag">&gt;</span><span class="pln">Users</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln"><br>
        </span><span class="tag">&lt;li&gt;&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">&quot;#panel-clients&quot;</span><span class="tag">&gt;</span><span class="pln">Clients</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln"><br>
<br>    </span><span class="tag">&lt;/ul&gt;</span><span class="pln"><br>    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">&quot;panel-users&quot;</span><span class="tag">&gt;</span><span class="pln"><br>
        </span><span class="tag">&lt;table</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">&quot;list&quot;</span><span class="tag">&gt;&lt;/table&gt;</span><span class="pln"> <br>
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">&quot;pager&quot;</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln"> <br>
    </span><span class="tag">&lt;/div&gt;</span><span class="pln"><br>    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">&quot;panel-clients&quot;</span><span class="tag">&gt;</span><span class="pln"><br>
<br>    </span><span class="tag">&lt;/div&gt;</span><span class="pln"><br></span><span class="tag">&lt;/div&gt;</span><span class="pln"><br><br></span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span class="pln"><br>
    $</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>        $</span><span class="pun">(</span><span class="str">&quot;#tabs&quot;</span><span class="pun">).</span><span class="pln">tabs</span><span class="pun">();</span><span class="pln"><br>
    </span><span class="pun">});</span><span class="pln"><br></span><span class="tag">&lt;/script&gt;</span><span class="pln"><br><br></span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span class="pln"><br>
jQuery</span><span class="pun">(</span><span class="pln">document</span><span class="pun">).</span><span class="pln">ready</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(){</span><span class="pln"> <br>
  jQuery</span><span class="pun">(</span><span class="str">&quot;#list&quot;</span><span class="pun">).</span><span class="pln">jqGrid</span><span class="pun">({</span><span class="pln"><br>    url</span><span class="pun">:</span><span class="str">&#39;<a href="http://192.168.20.155:3000/admin/rest/users">http://192.168.20.155:3000/admin/rest/users</a>&#39;</span><span class="pun">,</span><span class="pln"><br>
    dataType</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;json&#39;</span><span class="pun">,</span><span class="pln"><br>    mtype</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;GET&#39;</span><span class="pun">,</span><span class="pln"><br>
    colNames</span><span class="pun">:[</span><span class="str">&#39;Id&#39;</span><span class="pun">,</span><span class="str">&#39;Username&#39;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&#39;Minutes&#39;</span><span class="pun">,</span><span class="str">&#39;Status&#39;</span><span class="pun">,</span><span class="str">&#39;Message&#39;</span><span class="pun">,</span><span class="str">&#39;Notes&#39;</span><span class="pun">,</span><span class="str">&#39;Troublemaker&#39;</span><span class="pun">],</span><span class="pln"><br>
    colModel </span><span class="pun">:[</span><span class="pln"> <br>      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;id&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;id&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">11</span><span class="pun">},</span><span class="pln"> <br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;username&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;username&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">90</span><span class="pun">},</span><span class="pln"> <br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;minutes&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;minutes&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">3</span><span class="pun">,</span><span class="pln"> align</span><span class="pun">:</span><span class="str">&#39;right&#39;</span><span class="pun">},</span><span class="pln"> <br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;status&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;status&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">80</span><span class="pun">,</span><span class="pln"> align</span><span class="pun">:</span><span class="str">&#39;right&#39;</span><span class="pun">},</span><span class="pln"> <br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;message&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;message&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">80</span><span class="pun">,</span><span class="pln"> align</span><span class="pun">:</span><span class="str">&#39;right&#39;</span><span class="pun">,</span><span class="pln"> sortable</span><span class="pun">:</span><span class="kwd">false</span><span class="pun">},</span><span class="pln"> <br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&#39;note&#39;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;note&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">150</span><span class="pun">,</span><span class="pln"> sortable</span><span class="pun">:</span><span class="kwd">false</span><span class="pun">},</span><span class="pln"><br>
      </span><span class="pun">{</span><span class="pln">name</span><span class="pun">:</span><span class="str">&quot;troublemaker&quot;</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">:</span><span class="str">&#39;troublemaker&#39;</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">:</span><span class="lit">1</span><span class="pun">}</span><span class="pln"><br>
    </span><span class="pun">],</span><span class="pln"><br>    pager</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;#pager&#39;</span><span class="pun">,</span><span class="pln"><br>    rowNum</span><span class="pun">:</span><span class="lit">10</span><span class="pun">,</span><span class="pln"><br>
    rowList</span><span class="pun">:[</span><span class="lit">10</span><span class="pun">,</span><span class="lit">20</span><span class="pun">,</span><span class="lit">30</span><span class="pun">],</span><span class="pln"><br>
    sortname</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;username&#39;</span><span class="pun">,</span><span class="pln"><br>    sortorder</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;desc&#39;</span><span class="pun">,</span><span class="pln"><br>
    viewrecords</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"><br>    caption</span><span class="pun">:</span><span class="pln"> </span><span class="str">&#39;My test grid&#39;</span><span class="pun">,</span><span class="pln"><br>
    jsonReader </span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>    root</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;rows&quot;</span><span class="pun">,</span><span class="pln"><br>
    page</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;page&quot;</span><span class="pun">,</span><span class="pln"><br>    total</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;total&quot;</span><span class="pun">,</span><span class="pln"><br>
    records</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;records&quot;</span><span class="pun">,</span><span class="pln"><br>    repeatitems</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"><br>
    cell</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;cell&quot;</span><span class="pun">,</span><span class="pln"><br>    id</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;id&quot;</span><span class="pun">,</span><span class="pln"><br>
        userdata</span><span class="pun">:</span><span class="pln"> </span><span class="str">&quot;userdata&quot;</span><span class="pln"><br>    </span><span class="pun">}</span><span class="pln"><br>  </span><span class="pun">});</span><span class="pln"> <br>
</span><span class="pun">});</span><span class="pln"> <br></span><span class="tag">&lt;/script&gt;</span><span class="pln"><br></span></code></pre><br><p>And here is the JSON data that the url returns:</p><p>{&quot;page&quot;:0,&quot;records&quot;:&quot;3&quot;,&quot;total&quot;:1,&quot;rows&quot;:[{&quot;cell&quot;:[&quot;1&quot;,&quot;admin&quot;,&quot;30&quot;,&quot;enabled&quot;,null,null,&quot;0&quot;]},{&quot;cell&quot;:[&quot;2&quot;,&quot;test1&quot;,&quot;30&quot;,&quot;enabled&quot;,null,null,&quot;0&quot;]},{&quot;cell&quot;:[&quot;3&quot;,&quot;test2&quot;,&quot;30&quot;,&quot;enabled&quot;,null,null,&quot;0&quot;]}]}</p>


<blockquote>
  
</blockquote>

<p>I know this isn&#39;t specifically a Catalyst question, but I thought someone here may have experienced this before. I&#39;m using Controller::REST and Catalyst::TraitFor::Controller::jQuery::jqGrid. Any help would be greatly appreciated.</p>
Here is the REST controller for posterity:<br>package LibkiServer::Controller::Admin::REST;<br>use Moose;<br>use namespace::autoclean;<br><br>with &#39;Catalyst::TraitFor::Controller::jQuery::jqGrid&#39;;<br><br>BEGIN {extends &#39;Catalyst::Controller::REST&#39;; }<br>
<br>=head1 NAME<br><br>LibkiServer::Controller::Admin::REST - Catalyst REST Controller<br><br>=head1 DESCRIPTION<br><br>Catalyst REST Controller for Administration.<br><br>=head1 METHODS<br><br>=cut<br><br><br>=head2 index<br>
<br>=cut<br><br>sub users : Local : ActionClass(&#39;REST&#39;) { }<br><br>sub users_GET {<br>    my ( $self, $c ) = @_;<br><br>    my $user_rs = $c-&gt;model(&#39;DB::User&#39;)-&gt;search( {}, { prefetch =&gt; { session =&gt; &#39;client&#39; } } );<br>
    $user_rs = $self-&gt;jqgrid_page( $c, $user_rs );<br><br>    my $row = 0; <br>    my @row_data;<br>    <br>    while ( my $user = $user_rs-&gt;next() ) {<br>        my $user_id = $user-&gt;id;<br>        <br>        my @cell;<br>
        push( @cell, $user-&gt;id );<br>        push( @cell, $user-&gt;username );<br>        push( @cell, $user-&gt;minutes );<br>        push( @cell, $user-&gt;status ); <br>        push( @cell, $user-&gt;message );<br>
        push( @cell, $user-&gt;notes );<br>        push( @cell, $user-&gt;is_troublemaker );<br>        push( @cell, defined( $user-&gt;session ) ? $user-&gt;session-&gt;status : undef );<br>        push( @cell, defined( $user-&gt;session ) ? $user-&gt;session-&gt;client-&gt;id : undef );<br>
        push( @cell, defined( $user-&gt;session ) ? $user-&gt;session-&gt;client-&gt;clientname : undef );<br>        my $single_row = {<br>            cell =&gt; \@cell<br>        };<br>        push( @row_data, $single_row );<br>
<br>    }<br><br>    $self-&gt;status_ok(<br>        $c,<br>        entity =&gt; {  <br>            page =&gt; $c-&gt;stash-&gt;{json_data}-&gt;{page},<br>            total =&gt; $c-&gt;stash-&gt;{json_data}-&gt;{total},<br>
            records =&gt; $c-&gt;stash-&gt;{json_data}-&gt;{records},<br>            rows =&gt; \@row_data<br>        }<br>    );<br>}<br><br><br clear="all"><a href="http://www.kylehall.info">http://www.kylehall.info</a><br>
Mill Run Technology Solutions ( <a href="http://millruntech.com">http://millruntech.com</a> )<br>Crawford County Federated Library System ( <a href="http://www.ccfls.org">http://www.ccfls.org</a> )<br>Meadville Public Library ( <a href="http://www.meadvillelibrary.org">http://www.meadvillelibrary.org</a> )<br>
<br>
<br><br><div class="gmail_quote">On Thu, Jul 8, 2010 at 12:02 PM, Jeff Albert <span dir="ltr">&lt;<a href="mailto:jralbert@uvic.ca">jralbert@uvic.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;serif&quot;; color: rgb(31, 73, 125);">Some of your users have sessions, and thus will have a row or
rows in the related ‘session’ resultset – but some don’t. When you attempt to
access $user-&gt;session-&gt;client-&gt;clientname, you’re assuming that $user-&gt;session
is defined – but in the case of a user row with no related session row,
$user-&gt;session won’t be defined, and you’ll raise the error you described
when you attempt to access the methods of that resultset. Do a quick defined()
test on $user-&gt;session before you try to use its methods, and you’ll be good
to go. Hope that helps!</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;serif&quot;; color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;serif&quot;; color: rgb(31, 73, 125);">Cheers,</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;serif&quot;; color: rgb(31, 73, 125);">Jeff Albert</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;serif&quot;; color: rgb(31, 73, 125);"> </span></p>

<div style="border-style: solid none none; border-color: rgb(181, 196, 223) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium; padding: 3pt 0in 0in;">

<p class="MsoNormal" style="margin-left: 0.5in;"><b><span style="font-size: 10pt;">From:</span></b><span style="font-size: 10pt;"> Kyle Hall [mailto:<a href="mailto:kyle.m.hall@gmail.com" target="_blank">kyle.m.hall@gmail.com</a>] <br>

<b>Sent:</b> Thursday, July 08, 2010 7:57 AM<br>
<b>To:</b> <a href="mailto:catalyst@lists.scsys.co.uk" target="_blank">catalyst@lists.scsys.co.uk</a><br>
<b>Subject:</b> [Catalyst] Nonsensical Problem with DBIx ResultSet</span></p>

</div><div><div></div><div class="h5">

<p class="MsoNormal" style="margin-left: 0.5in;"> </p>

<p class="MsoNormal" style="margin-right: 0in; margin-bottom: 12pt; margin-left: 0.5in;">Hello all,<br>
  I&#39;m the developer of a FOSS kiosk management system, Libki. I&#39;m in the
early stages of a complete rewrite using Catalyst for the web-based
administration interface. This is my first time using Catalyst, but I&#39;m very
excited by the possibilities! I&#39;m having a very strange issue with my
resultsets. For example, I have three tables, a users table, a clients table,
and a sessions table that connects the user to a client.<br>
<br>
I grab my users from the database, with any session/client data if the user is
currently logged in to a client kiosk. I am prefetching the session and client
table data.<br>
<br>
my $user_rs = $c-&gt;model(&#39;DB::User&#39;)-&gt;search( {}, { prefetch =&gt; {
session =&gt; &#39;client&#39; } } );<br>
<br>
Now I want to loop through it.<br>
<br>
    my $row = 0;<br>
    my @row_data;<br>
    <br>
    while ( my $user = $user_rs-&gt;next() ) {<br>
        my $user_id = $user-&gt;id;<br>
        <br>
        warn
$user-&gt;session-&gt;client-&gt;clientname;<br>
        <br>
        my $single_row = {<br>
            cell =&gt; [<br>
               
$user-&gt;id,<br>
               
$user-&gt;username,<br>
               
$user-&gt;minutes, <br>
               
$user-&gt;status,  <br>
               
$user-&gt;is_troublemaker,<br>
               
$user-&gt;session-&gt;client-&gt;clientname;<br>
            ]<br>
        };   <br>
        push( @row_data, $single_row );<br>
    }<br>
<br>
<br>
Now, if I try to access any of the other tables, I get an error:<br>
[error] Caught exception in LibkiServer::Controller::Admin::REST-&gt;users
&quot;Can&#39;t call method &quot;client&quot; on an undefined value at
/home/libki/LibkiServer/script/../lib/LibkiServer/Controller/Admin/REST.pm line
40.&quot;<br>
<br>
I don&#39;t know why I get this error, but the really crazy part is *the warn still
works*:<br>
Client Name: testclient1 at
/home/libki/LibkiServer/script/../lib/LibkiServer/Controller/Admin/REST.pm line
40.<br>
<br>
If anyone can help me out, I&#39;d be eternally grateful.<br>
<br>
Thanks,<br>
Kyle<br>
<br clear="all">
<a href="http://www.kylehall.info" target="_blank">http://www.kylehall.info</a><br>
Mill Run Technology Solutions ( <a href="http://millruntech.com" target="_blank">http://millruntech.com</a>
)<br>
Crawford County Federated Library System ( <a href="http://www.ccfls.org" target="_blank">http://www.ccfls.org</a>
)<br>
Meadville Public Library ( <a href="http://www.meadvillelibrary.org" target="_blank">http://www.meadvillelibrary.org</a>
)</p>

</div></div></div>

</div>


<br>_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br></blockquote></div><br>