【问题标题】:Ruby on Rails edit form to show first_name and last_name from the helpersRuby on Rails 编辑表单以显示助手中的 first_name 和 last_name
【发布时间】:2021-07-05 05:13:42
【问题描述】:

我是 Rails 的初学者。我有一个用户模型,它有一个名为名称的字段。将通过加入我从输入表单中获得的 first_name 和 last_name (name = "#{first_name} #{last_name}" 值来输入用户名。但是当我尝试编辑用户时,我正在拆分来自数据库的名称的值并将其显示在视图中。(name.split('').first for first_name 和 name.split('').last for the last_name from the users_helper。但这里的问题是,如果first_name 的值是 Veronica Roth 并且 last_name 是 Taylor 在视图中显示的值是 Veronica for first_name 和 Taylor for last_name 有没有有效的方法在编辑表单中显示 first_name 和 last_name 因为它是实际的 first_name 和 last_name无需向 DB 添加 first_name 和 last_name 列(名称已在 DB 中)。

user.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

【问题讨论】:

    标签: string forms ruby-on-rails-4 input split


    【解决方案1】:

    如果我理解正确,您希望将除 name 数组中的最后一个元素(使用拆分 name 属性生成的元素)之外的所有元素视为 first_namelast_name 始终具有name 数组中最后一个元素的值。

    如果是这种情况,您可以这样做:

    *first_name, last_name = user.name.split(' ')
    first_name = first_name.join(' ')
    

    我们在这里所做的只是将我们的名称数组解构为两个变量,first_namelast_name* 运算符在 first_name 关键字之前称为 splat 运算符。在这种情况下,它会将除最后一个元素之外的所有元素收集到一个数组中,然后我们使用join 方法将该数组连接到一个字符串中。

    您可以在此处阅读有关破坏的更多信息:https://jsarbada.wordpress.com/2019/02/05/destructuring-with-ruby/

    【讨论】:

    • 感谢您的建议。有什么方法可以获取 first_name 和 last_name 的实际值?例如:first_name:“Mary Elizabeth”和 last_name:“Anne Winstead”。上面的片段将返回“Mary Elizabeth Anne”作为 first_name 和“Winstead”作为 last_name。
    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 2015-03-03
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多