Ruby on Rails: ошибка создания записи из представления
У меня есть отдельная проблема.
У меня есть таблица, которая заполняется из нескольких разных моделей, она создает ссылки, чтобы следовать каждому соответствующему представлению.
Код, который я сделал для каждой ссылки, должен быть одинаковым, но по какой-то причине ссылка не отображается в разделе "Базовая линия". Я проверил: create методы для каждой модели, и они подражают друг другу, и код из представления также является просто копией - так что я не знаю, где искать дальше. Я уверен, что проблема в том, что метод create не работает, но я не знаю, где и как.
Вот код с моей точки зрения (я также вставляю код FollowUp3Week, потому что он работает):
<% if Baseline.where(subject_id: sub.subject_id).first != nil %>
<%= link_to "edit", baseline_path([Baseline.where(subject_id: sub.subject_id).first]) %>
<% else %>
<%= Baseline.create(subject_id: sub.subject_id) %> #I left the equal for the screenshot.
<% end %>
</td>
<td>
<% if FollowUp3Week.where(subject_id: sub.subject_id).first != nil %>
<%= link_to "edit", follow_up3_week_path([FollowUp3Week.where(subject_id: sub.subject_id).first]) %>
<% else %>
<% FollowUp3Week.create(subject_id: sub.subject_id) %>
<% end %>
</td>
А вот метод создания из baselines_controller.rb
def create
@baseline = Baseline.new(params[:baseline])
if @baseline.save
flash[:success] = "Baseline added from create method"
redirect_to baselines_url
else
render 'new'
end
end
Я также прилагаю изображение того, на что это похоже. Если я уберу знак равенства из<% =, ячейка будет пустой. изображение http://i60.tinypic.com/24q1h0k.png
РЕДАКТИРОВАТЬ. Я нахожусь в процессе удаления всех моих запросов к базе данных из представления. Спасибо за ваши Коментарии.
2 ответа
Вы должны действительно вывести этот Baseline.where из поля зрения и в модель. Сфера видимости AR с точки зрения серьезного нет-нет в Rails.
В базовом режиме вы можете сделать что-то вроде:
def empty_subject(subject_id)
where(subject_id: subject_id).first != nil
end
Кроме того, похоже, что вы передаете массивы в baseline_path и follow_up3_week_path. Угробить квадратные скобки.
На базовой модели, поставить это
def display_name
"#{name}" #whatever you like to show including link
end