Rails+Vue를 켜서 자체 검사할 때 매개 변수가 예상대로 전달되지 않습니다.
한 일
rails와 vue를 사용하여 사용자 등록 기능을 실현하고devise 등gem를 사용하지 않습니다
빠지다
사용자 등록 양식에 입력하고 켜서 검사할 때:user에 password와 password_confirmation의 값이 없으면 상당히 고전한다.
구체적으로 이런 느낌입니다.
이상형
콘솔
Parameters: {"user"=>{"name"=>"hogehoge", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}}
NG형
Parameters: {"name"=>"", "email"=>"", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "user"=>{"name"=>"", "email"=>""}}
password 및 password_confirmation만 user에 들어가지 않습니다!!NG형 상황에서도 컨트롤러의 주파수 플래시 파라미터를 사용할 수 있다
users_controller.rb
private
def user_params
params.permit(:name, :email, :password, :password_confirmation)
end
만약 그렇다면 괜찮지만, 어쨌든 멋지게 이렇게 쓰고 싶다!users_controller.rb
private
def user_params
params.fetch(:user, {}).permit(:name, :email, :password, :password_confirmation)
end
vue로 쓰면has_secure_password는 작용하지 않습니까?아니면,form의 작법이 좋지 않습니까?한 마디로 하면 여러 가지 원인을 고려하여 시간을 낭비하고 시간을 낭비했다.Vue 쓰기
NG 쓰는 법부터 시작해.(js 부분만 있습니다. 상당히 생략되었습니다)
NG 쓰기
NewForm.vue
import axios from 'axios';
export default {
data: () => ({
user: {
name: '',
email: '',
password: '',
password_confirmation: '',
},
}),
methods: {
createUser: function() {
axios
.post('/api/v1/users', this.user)
.then(response => {
var res = response.data;
this.$router.push({ name: 'home' })
})
.catch(error => {
if(error.response.data && error.response.data.errors) {
this.errors = error.response.data.errors;
}
})
},
이러면 NG야.이상적인 매개 변수의 쓰기 되돌리기
NewForm.vue
import axios from 'axios';
export default {
data: () => ({
name: '',
email: '',
password: '',
password_confirmation: '',
}),
methods: {
createUser: function() {
axios
.post('/api/v1/users', { user: { name: this.name, email: this.email, password: this.password, password_confirmation: this.password_confirmation }})
// 以下、同じなので省略
기계를 켜서 스스로 검사할 때, 이렇게 명확하게 쓰면 OK!도저히 받아들일 수 없는 것은 NG 때name와 이메일도 잘 끼워져 있다는 것이다.
password 및 password_confirmation은 표의 열에 존재하지 않기 때문에 가져올 수 없습니다.has_secure_패스워드를 써도 안 되나요
초보적인 설치에 많은 시간이 걸렸다고 한다.
그럼 안녕!
Reference
이 문제에 관하여(Rails+Vue를 켜서 자체 검사할 때 매개 변수가 예상대로 전달되지 않습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ishiken_1115/items/fb854855e7bbb3fcf6a1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)