我正在使用 Vuejs 3、vuerouter 4 和 pinia,并尝试在某些路线中放置导航防护,按照文档中的示例(如果用户未经身份验证并且不在登录页面上,则将用户发送到登录页面获得身份验证)。关于在组件之外使用 pinia 的pinia 文档中也对此进行了解释。但我无法理解它。
我使用的商店目前很简单(返回 false 或 true isAuthenticated):
//authStore.js
import { defineStore } from "pinia";
export const useAuthStore = defineStore( 'AuthStore', {
state: () => {
return {
isAuthenticated: false
}
}
})
Run Code Online (Sandbox Code Playgroud)
isAuthenticated我想在一个beforeEnter中使用这个routes/index.js
在 main.js 中:
import { useAuthStore } from '@/stores/authStore'
import { createApp } from 'vue'
import App from './App.vue'
import router from '@/router'
import { createPinia } from 'pinia' …Run Code Online (Sandbox Code Playgroud) 我有这个字符串:
auteur = "comte de Flandre et Hainaut, Baudouin, Jacques, Thierry"
Run Code Online (Sandbox Code Playgroud)
我想在第一个逗号之前删除所有内容,即在这种情况下保留"Baudouin,Jacques,Thierry"
试过这个:
nom = auteur.gsub(/.*,/, '')
Run Code Online (Sandbox Code Playgroud)
但是在最后一个逗号之前删除了所有内容并且只保留了"Thierry".
我正在使用summernote版本0.8.1(当前).
它正在发挥作用.但有一件事我很挣扎.插入图像,而不是放入base64 dataURL,我想将图像上传到服务器并在图像数据库中插入图像URL.这是我的代码:
<script>
$(document).ready(function() {
$('#summernote').summernote({
lang: 'fr-FR',
height: 300,
toolbar : [
['style',['bold','italic','underline','clear']],
['font',['fontsize']],
['color',['color']],
['para',['ul','ol','paragraph']],
['link',['link']],
['picture',['picture']]
],
onImageUpload: function(files, editor, welEditable) {
for (var i = files.lenght - 1; i >= 0; i--) {
sendFile(files[i], this);
}
}
});
function sendFile(file, el) {
var form_data = new FormData();
form_data.append('file',file);
$.ajax ({
data: form_data,
type: "POST",
url: "../up.php",
cache: false,
contentType: false,
processData: false,
success: function(url) {
$(el).summernote('editor.insertImage',url);
}
})
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
我已经测试了脚本up.php,它的作用是更改文件名并以"../photos/mypicture.jpg"的形式返回图像的url.
上面代码的问题是,甚至似乎都没有调用..up.php.我在Firefox开发工具中运行它并没有出现任何错误或警告.
我有这个代码:
<%= form_for :biblio, url: {action: "create"} do |f| %>
[cut for brievity]
<%= f.text_field :auteur, size: 100, class:"champs_auteur" %>
Run Code Online (Sandbox Code Playgroud)
这创建了这个 html :
<input size="100" class="champs_auteur" name="biblio[auteur]" id="biblio_auteur" type="text">
Run Code Online (Sandbox Code Playgroud)
我正在尝试将名称设为: name="biblio[auteur][1]"
我不明白怎么办
在添加书目表单中,我创建了一个添加作者表单,该表单使用json添加了作者。
这很好。
但是,当作者添加到数据库时,我想显示一条成功消息。
这是我的代码:
def create
@auteur = Auteur.new(params_auteur)
respond_to do |q|
if @auteur.save
format.html{ redirect_to @auteur, notice: 'Auteur added successfully.'}
format.js{}
format.json{
render json: @auteur, status: :created, location: @auteur
}
else
format.html{ render action: "new"}
format.json{ render json: @auteur.errors, status: :unprocessable_entity}
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,我添加了一个views/auteurs/create.js.erb包含以下代码的文件:
$("<%= escape_javascript(render @auteur) %>").appendTo(".bloque_ajoute_auteur");
Run Code Online (Sandbox Code Playgroud)
我的错误消息是在(成功)将新作者插入数据库后生成的:
Completed 500 Internal Server Error in 10ms (ActiveRecord: 1.6ms)
ArgumentError (too few arguments):
app/controllers/administration/auteurs_controller.rb:23:in `format'
app/controllers/administration/auteurs_controller.rb:23:in `block in create'
app/controllers/administration/auteurs_controller.rb:21:in `create'
Run Code Online (Sandbox Code Playgroud)
第21行是response_to块的开始;第23行是format.html{ redirect_to @auteur, notice: 'Auteur …
我在应用程序的多个位置上使用了jQuery自动完成功能,包括带有url的表单:
http://www.fonsiuris.net/fr/administration/actes/nouveau/122
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/管理/行为表单具有以下字段:
http://www.fonsiuris.net/fr/administration/actes/nouveau/122
Run Code Online (Sandbox Code Playgroud)
在routes.rb中:
<%= lieux.text_area :place, :value => params[:acte] ? @place["place"] : "", class:"field_places", data: {autocomplete_source: lieux_enum_path} %>
Run Code Online (Sandbox Code Playgroud)
这是我的routes.rb的第一个URL
但是,当我在文本区域中键入字母时,例如具有自动完成功能的“ Dou”,它将指向此url:
http://www.fonsiuris.net/fr/biblios/trouver?utf8=?&ch_bib[aut_titre_cherche]=Douai&commit.x=6&commit.y=2&term=Dou
Run Code Online (Sandbox Code Playgroud)
当我输入多个术语时,该术语会像这样添加到网址中:
/fr/biblios/trouver?utf8=%E2%9C%93&ch_bib%5Baut_titre_cherche%5D=Douai&commit.x=5&commit.y=11&term=Paris
Run Code Online (Sandbox Code Playgroud)
(都将杜埃岛和巴黎都添加为搜索词)
它应该指向这个URL:
http://www.fonsiuris.net/lieux/enum?term=Dou
Run Code Online (Sandbox Code Playgroud)
给出正确的结果。我在应用程序的多个位置使用了相同的代码,并且使用了相同的javascript,并且在其他所有地方都可以正常使用!
的输出rails routes | grep enum是:
lieux_enum GET /lieux/enum(.:format) lieux#enum
motclefs_enum GET /motclefs/enum(.:format) motclefs#enum
actes_enum_acte_mot GET /actes/enum_acte_mot(.:format) actes#enum_acte_mot
biblios_enum_rec GET /biblios/enum_rec(.:format) biblios#enum_rec
administration_archives_enum GET /administration/archives/enum(.:format) administration/archives#enum_archive
administration_biblios_enum GET (/:locale)/administration/biblios/enum(.:format) administration/biblios#enum_titres {:locale=>/fr|en|nl|it/}
administration_auteurs_enum GET (/:locale)/administration/auteurs/enum(.:format) administration/auteurs#enum_noms {:locale=>/fr|en|nl|it/}
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的是:
我不知道从哪里开始寻找解决方案。
我正在将 vuelidate 与组合 API 一起使用,但我不明白为什么v$.validate()当我放入 inside methods、 aftersetup而不是 inside 时,它可以正常工作setup。
所以这有效:
setup() {
// inspired from
// https://vuelidate-next.netlify.app/#alternative-syntax-composition-api
const state = reactive ({
// the values of the form that need to pass validation, like:
name: ''
})
const rules = computed (() => {
return {
// the validation rules
}
const v$ = useVuelidate(rules, state)
return {
state,
v$
}
},
methods: {
async submitForm () {
const result = await …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
if(isset($_POST['prenom2'])){
$t['prenom2'] = $_POST['prenom2'];
}else{
$t['prenom2'] = '';
}
if(isset($_POST['nom2'])){
$t['nom2'] = $_POST['nom2'];
}else{
$t['nom2'] = '';
}
if(isset($_POST['prenom3'])){
$t['prenom3'] = $_POST['prenom3'];
}else{
$t['prenom3'] = '';
}
Run Code Online (Sandbox Code Playgroud)
等(我需要测试5或6个字段).
必须有更好的方法来做到这一点,比如如果没有设置给定的POST索引,那么索引就是......
谢谢
php ×2
vuejs3 ×2
arrays ×1
gsub ×1
javascript ×1
json ×1
pinia ×1
post ×1
regex ×1
ruby ×1
summernote ×1
url ×1
vue-router ×1
vuelidate ×1