如果我在URL调用中有多个参数,如何写烧瓶approute?
这是我从AJax调用的URL
http://0.0.0.0:8888/createcm?summary=VVV&change=Feauure
Run Code Online (Sandbox Code Playgroud)
我试图像这样写我的烧瓶approute.
@app.route('/test/<summary,change> ,methods=['GET']
Run Code Online (Sandbox Code Playgroud)
但这不起作用.任何人都可以建议我如何提及approute?
我知道i18n语言环境文件中有一些预设结构,以便Rails自动提取值.例如,如果要为新记录设置默认提交按钮文本:
# /config/locales/en.yml
en:
helpers:
submit:
create: "Create %{model}"
user:
create: "Sign Up"
Run Code Online (Sandbox Code Playgroud)
使用此设置,在视图中将产生以下结果:
# /app/views/things/new.html.erb
<%= f.submit %> #=> Renders a submit button reading "Create Thing"
# /app/views/users/new.html.erb
<%= f.submit %> #=> Renders a submit button reading "Sign Up"
Run Code Online (Sandbox Code Playgroud)
因此,Rails使用预设层次结构来获取不同模型的提交按钮文本.(也就是说,你不必告诉它在使用时可以获得哪些i18n文本f.submit
.)我一直试图找到一种方法来使用flash通知和警报.是否有类似的预设结构来指定默认的Flash消息?
我知道您可以指定自己的任意结构,如下所示:
# /config/locales/en.yml
en:
controllers:
user_accounts:
create:
flash:
notice: "User account was successfully created."
# /app/controllers/users_controller.rb
def create
...
redirect_to root_url, notice: t('controllers.user_accounts.create.flash.notice')
...
end
Run Code Online (Sandbox Code Playgroud)
但notice: t('controllers.user_accounts.create.flash.notice')
每次指定都很繁琐.有没有办法做到这一点,以便控制器"只知道"何时抓取并显示区域设置文件中指定的相应闪存消息?如果是这样,这些的默认YAML结构是什么?
我按照这个链接.我的代码在控制器中如下
public function actionFunction4()
{
$this->layout="sintel";
$model= new Customers();
\Yii::$app->getSession()->setFlash('success', 'successfully got on to the payment page');
return $this->render("function4",['model'=>$model]);
}
Run Code Online (Sandbox Code Playgroud)
在视图中
<div id="message">
<?= Yii::$app->session->getFlash('success');?>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我所做的结果并不是我的预期.我收到了一条消息"已成功进入付款页面",就像我已经回复了它一样.如果它与echo类似,那么为什么我们在Yii2中需要一条flash消息.我想我的代码中可能会遗漏一些使我的flash消息看起来像普通消息的东西.
我试图在控制器中设置闪存通知,但似乎我只能定义:通知.当我尝试定义:errors或flash [:errors]时,我遇到了一堆错误.我目前有这个工作,但所有的消息显然是一个通知类型,而不是错误或警告.我想知道如何设置错误或警告而不是通知.我正在使用rails 3.2和twitter bootstrap rails gem
在application.html.erb中
<%= bootstrap_flash %>
Run Code Online (Sandbox Code Playgroud)
在 manuals_controller.rb
class ManualsController < ApplicationController
def create
respond_to do |format|
format.html { redirect_to root_url, notice:'MyManual was successfully created.' }
end
end
end
Run Code Online (Sandbox Code Playgroud) ruby-on-rails ruby-on-rails-3 flash-message twitter-bootstrap
我正在使用Flask创建一个Web应用程序来处理GoogleOpenID,这些代码几乎已经完成,除了闪烁的消息包含一个链接:
@oid.after_login
def create_or_login(resp):
user = db_session.query(User).filter_by(email=resp.email).first()
if user is not None:
flash('Successfully signed in', 'success')
else:
user = User(nickname=resp.fullname, source=GOOGLE, email=resp.email)
db_session.add(user)
db_session.commit()
flash(flashing_message, 'success')
g.user = user
session['nickname'] = user.nickname
return redirect(oid.get_next_url())
Run Code Online (Sandbox Code Playgroud)
当flashing_message是这样时,它运行良好: 'Successfully registered, please click here'
但是当flashing_message是'Successfully registered, please click <a href="/me" class="alert-link">here</a>'
,它不起作用(没有任何闪烁)而不会抛出任何错误.奇怪的是,flash()和return之间的句子也不起作用(没有设置session ['nickname]或g.user).
我试图传递一个图像的文件名并在模板上呈现它,虽然我传递的实际名称通过它不显示在页面上
@app.route('/', methods=['GET','POST'])
@app.route('/start', methods=['GET','POST'])
def start():
person_to_show = 'tim'
profilepic_filename = os.path.join(people_dir, person_to_show, "img.jpg")
return render_template('start.html',profilepic_filename =profilepic_filename )
Run Code Online (Sandbox Code Playgroud)
例如:profilepic_filename = /data/tim/img.jpg我试过了
{{profilepic_filename}}
<img src="{{ url_for('data', filename='tim/img.jpg') }}"></img>
Run Code Online (Sandbox Code Playgroud)
我也试过了
<img src="{{profilepic_filename}}"></img>
Run Code Online (Sandbox Code Playgroud)
两者都不奏效
当用户在我的Rails应用程序上登录失败时,我想将它们指向密码重置页面:
flash[:notice] = "Login failed. If you have forgotten your password, you can #{link_to('reset it', reset_path)}"
Run Code Online (Sandbox Code Playgroud)
但是,我不能在控制器中使用link_to.如果不混合控制器和视图逻辑,最好的方法是什么?
我最好的猜测是闪光灯是错误的地方,但我很欣赏任何输入.
我想在我们的页面上添加对flash消息的支持.我按照此处的文档实现了这一点.
我将以下snipplet添加到我的基本布局中.(我也尝试将其添加到特定的操作模板中).
{% if app.session.hasFlash('notice') %}
<div id="flashmessage" class="flash-notice">
{{ app.session.flash('notice') }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
添加以下错误后抛出
Twig_Error_Runtime:第66行"MyBundle :: layout.html.twig"中不存在""的"hasFlash"项
还有什么我需要做的吗?
在重定向的情况下,Flash消息似乎被破坏了.我做了简单的测试代码:
public function actionTest($test = 0) {
if($test == 0) {
Yii::$app->getSession()->addFlash('success', 'Follow the white rabbit');
return Yii::$app->getResponse()->redirect(array('test', 'test' => 1));
}
return $this->render('test', []);
}
Run Code Online (Sandbox Code Playgroud)
我调用没有参数的动作,它添加了一个flash并重定向.当它呈现页面时 - 闪存不存在.
视图部分很好,因为如果我设置flash并进行渲染而不重定向,则会正确渲染.
为什么?
编辑:布局视图代码:
<?php
use frontend\widgets\Alert;
$this->beginPage();
echo $this->render('partials/head');
?>
<body class="no-sidebar">
<?= $this->beginBody() ?>
<div id="header">
<?= $this->render('partials/top') ?>
<?= $this->render(Yii::$app->user->isGuest ? 'menus/guest' : 'menus/registered') ?>
</div>
<!-- Main -->
<div id="main">
<?= Alert::widget() ?>
<?= $content ?>
</div>
<?= $this->render('partials/footer') ?>
<?= $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
Run Code Online (Sandbox Code Playgroud) 我们愿意/被迫为大学开发一个小型的webapp.现在我们开始了,一切似乎都很好,直到上面的奇怪错误提出来.
"声明预期,发现py:Dedent"
以下代码行引发错误:
def get_reset_token(self, mysql, userid):
try:
conn = mysql.connect()
cursor = conn.cursor()
cursor.execute("""SELECT token FROM tralala_reset_password
WHERE uid=(%s)""", userid)
data = cursor.fetchall()
cursor.close()
conn.close()
return data[0]
except Exception as e:
app.logger(str(e))
return ""
Run Code Online (Sandbox Code Playgroud)
Pycharm开始标记"回归""声明.
最好的祝福,
玛丽安