Первый элемент
Похоже, у вас есть несколько других похожих вопросов ( здесь и здесь ), открытых прямо сейчас, и для текущего, и для этогоодин выглядит так, как будто ваше @conts
значение в настоящее время nil
означает, что ничего не было возвращено при запуске поиска:
def compdata
@conts = Continfo.find_by_id(params[:id])
end
Вы уверены, что в вашей таблице есть значение с id
равно params[:id]
?
Если там будет несоответствие, это будет первое место, на которое я посмотрю.
Второй элемент
Вы также можете столкнуться с проблемойпопытка вызвать метод each
для @conts
, потому что метод find_by_id
не вернет массив.Если вы хотите, чтобы он перебирал каждую запись вместо каждой клавиши / val, попробуйте использовать find_all_by_id
, который вернет array .
Третий элемент
После просмотраВаш другой вопрос, похоже, что ваш синтаксис отличается от этого, но не следует ли вам повторить итерацию по @conts
снова, как это?
xml.tag!("rows") do
@conts.each do |t|
xml.tag!("row",{ "id" => t.id }) do
xml.tag!("cell", t.first_name)
xml.tag!("cell", t.last_name)
xml.tag!("cell", t.email)
xml.tag!("cell", t.phone_1)
xml.tag!("cell", t.phone_2)
xml.tag!("cell", t.homepage)
xml.tag!("cell", t.skype)
end
end
end
Это был бы способ назначить t
вместо какt = @conts
, особенно если вы планируете пройти через многие из них.