string - Ruby on Rails 编辑表单以显示助手中的 first_name 和 last_name
问题描述
我是 Rails 的初学者。我有一个用户模型,它有一个名为名称的字段。将通过加入我从输入表单中获得的 first_name 和 last_name (name = "#{first_name} #{last_name}" 值来输入用户名。但是当我尝试编辑用户时,我正在拆分数据库中名称的值并将其显示在视图中。(name.split('').first 为 first_name 和 name.split('').last 为来自 users_helper 的 last_name。但这里的问题是,如果first_name 的值是 Veronica Roth,last_name 是 Taylor,在视图中显示的值是 Veronica for first_name,Taylor for last_name。
用户.rb
class User < ActiveRecord::Base
acts_as_paranoid
validates :email, format: { with: Devise.email_regexp }
attr_accessor :first_name, :last_name
end
users_helper.rb
module UsersHelper
def get_form_value(form_name, user)
form_value = ''
case form_name
when "first_name"
if user.present? and user.name.present?
form_value = user.name.split(" ").first
end
when "last_name"
if user.present? and user.name.present?
form_value = user.name.split(" ").last
end
end
end
解决方案
如果我理解正确,您希望将除 name 数组中的最后一个元素(使用拆分 name 属性生成的元素)之外的所有元素视为 thefirst_name
并且last_name
始终具有 name 数组中最后一个元素的值.
如果是这种情况,您可以简单地执行以下操作:
*first_name, last_name = user.name.split(' ')
first_name = first_name.join(' ')
我们在这里所做的只是将我们的名称数组解构为两个变量,first_name
并且last_name
,关键字*
之前的运算符first_name
称为 splat 运算符。在这种情况下,它会将除最后一个元素之外的每个元素都收集到一个数组中,然后我们使用该join
方法将该数组连接到一个字符串中。
您可以在此处阅读有关破坏的更多信息:https ://jsarbada.wordpress.com/2019/02/05/destructuring-with-ruby/
推荐阅读
- angularjs - 我在 Google Analytic 中的事件跟踪在哪里?
- tomcat8 - API 网关拒绝包含西班牙语字符 (á , í) 的请求
- python - 詹金斯找不到boto3模块
- sql - PostgreSQL:听插入
- r - 在 R 中填充矩阵
- node.js - Await - Async 不会使函数在行为上同步
- linux - 如何使用 openssl 进行匿名 DH 连接
- java - 詹金斯——'?在创造工作时是一个不安全的角色
- php - Cloudflare Rocket loader 导致 js 错误($ 未定义)
- swift - 将 EXIF 数据保存为 JPEG - Swift