ошибка интернирования пустой строки - PullRequest
4 голосов
/ 31 января 2010

В настоящее время в моей модели запроса у меня есть:

belongs_to :requestor, :class_name => 'User'

Таким образом, запросчик является current_user.

Проблема в том, что когда current_user нажимает кнопку создания, чтобы отправить форму для запроса, все атрибуты обновляются в базе данных в форме.
Но поскольку requestor_id не является значением для заполнения в форме, при создании новой записи запроса возвращается значение null в базе данных.
Мне нужно целое число (равное первичному ключу таблицы Users), обновляемое в столбце requestor_id в таблице запросов, когда пользователь нажимает кнопку создания.
Поэтому я подумал, что, возможно, добавление requestor_id в качестве символа в параметры для действия создания решит это:

def create_common
  @a = Request.new
    b = @a.requestor_id
  @resource = yield params[:contact + "#{b}".to_sym]
  self.resource = @resource

Но вместо этого он возвращает следующую ошибку:

интернирование пустой строки

Спасибо за любые предложения.

Ответы [ 4 ]

6 голосов
/ 30 января 2011

Я продолжал получать эту ошибку.Я проследил это до очень простого кода и воспроизвел в консоли следующее:

ruby-1.8.7-p174 :084 > a = 'fred'
 => "fred" 
ruby-1.8.7-p174 :085 > a.to_sym
 => :fred 
ruby-1.8.7-p174 :086 > a = ''
 => "" 
ruby-1.8.7-p174 :087 > a.to_sym
ArgumentError: interning empty string
    from (irb):87:in `to_sym'
    from (irb):87
2 голосов
/ 31 января 2010

Можете ли вы просто передать запрос current_user при его создании?

@req = Request.new(:requestor => current_user)

Я не совсем уверен, что должен делать оператор yield params,

0 голосов
/ 11 января 2014

У меня было '.' в сообщении об ошибке, похожем на:

 errors.add('You entered a non-supported widget.')

и получал «внутреннюю ошибку пустой строки»

Это сообщение спасло меня:

http://www.tonyamoyal.com/2009/10/20/interning-empty-string-error-in-ruby-on-rails/

Просто меняется на:

 errors.add('You entered a non-supported widget')

исправил это. Rails 2.3.4 и Ruby 1.8.5

0 голосов
/ 31 января 2010

Если я правильно понимаю ваш вопрос, вы хотите назначить идентификатор current_user в качестве идентификатора запросчика для модели запроса?

# assign values passed in via form
@request = Request.new(params[:request])
# assign current_user to request
@request.requestor = current_user
# save the request
@request.save!

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...