【发布时间】:2013-04-30 19:16:24
【问题描述】:
当用户访问杂志页面时,应该会出现一个按钮,如果该用户已经登录,则该按钮将允许当前登录的用户订阅特定杂志。匿名用户不应看到该按钮。
当用户登录时,我已经获得了显示按钮,但是单击该按钮不会调用我的控制器功能。
如果这是控制器功能:
@auth.requires_login()
def subscribe():
mag_id = request.args(0, cast=int)
db.subscribe.insert(magazine=mag_id, subscriber=auth.user.id)
这是视图的一部分:
<div>
{{=magazine.title}}
{{=magazine.description}}
</div>
<div>
{{ if auth.is_logged_in():}}
{{=A('subscribe', _class="btn_subscribe", callback=URL("subscribe", args=magazine.id))}}
{{pass}}
</div>
<a> 按钮显示如下:
<a href="#null" onclick="ajax('/myapp/default/subscribe/3',[],'me');return false">subscribe</a>
并且永远不会调用控制器函数,并且永远不会订阅用户。
【问题讨论】:
-
您的
A()助手生成以下 HTML:<a class="btn_subscribe" href="#null" onclick="ajax(&#x27;/test/default/subscribe/3&#x27;,[],&#x27;& #x27;);return false">subscribe</a>。上面输出中的“我”来自哪里?无论如何,你确定 web2py.js 已经加载了吗? -
@Anthony 我不确定“我”来自哪里。它似乎是由 web2py 自动生成的。您对 web2py.js 丢失的看法是正确的。我添加了它,现在正在调用控制器。你能回答一下,我会标记为正确的吗?
-
@Anthony 有没有办法在点击订阅按钮后刷新页面?这样锚按钮文本将更改为“您已订阅”以向用户表明该用户现在已订阅?目前我必须手动刷新整个页面才能看到更改。
-
如何在 A() 中包含另一个跨度