2013-08-25 5 views
0

Я ищу, как сохранить свой вход без пробелов.Рельсы: Сохранение ввода без пробелов

Я собираю вход на моей форме через

<%= f.input :name %> 

и использовать его также для связывания

localhost:3000/users/:name 

Проблема есть, если кто-то использует Spaces во имя его связь становится все все уродливый с% знаков и т. д.

Как хранить вход без пробелов?

E.g.

вход: Hey im John экономия как: HeyimJohn

Моя модель:

class Show < ActiveRecord::Base 

    belongs_to :user 

    validates :name, :presence => true, :uniqueness => true 

    # Show Cover 
    has_attached_file :cover, styles: { show_cover: "870x150#"} 
    validates_attachment :cover, 
              content_type: { content_type: ['image/jpeg', 'image/jpg', 'image/png'] }, 
              size: { less_than: 5.megabytes } 


    def to_param 
     name 
    end 

end 

ответ

2

Использование GSUB:

> "Hey im John".gsub(/\s+/,"") 
=> "HeyimJohn" 

и обновить хэш, вы можете сделать:

params_hash.each { |k, v| params_hash[k] = v.gsub(/\s+/, "") 

Update:

Чтобы обновить конкретный атрибут в вашей модели, вы можете определить сеттер в модели, которая удаляет все пробелы:

def my_attribute=(value) 
    write_attribute(:my_attribute, value.gsub(/\s+/,"")) 
end 
+0

Я относительно новым для Rails. Не могли бы вы объяснить мне, где я должен положить gsub? –

+0

Я был готов это сделать, пытаетесь ли вы обновить хэш параметров так, чтобы все входы или выборочные входы? Если это все входы, то выполнение этого в контроллере после получения параметра хэш может быть быстрее, если оно выборочно, тогда вы можете сделать это в модели. – vee

+0

Только для выборочных входов: ввод имени. Что мне нужно включить в мою модель? –

Смежные вопросы