AdilA
@AdilA
Нравится кодить, изучаю go c echo

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

Я вернулся)
В общем ситуация следующая, не могу разобраться в чем проблема, есть посты у постов есть город, надо чтобы был выбор по городам но у меня что то не получается)

posts_controller.rb
def post_all
		@posts = Post.all.paginate(page: params[:page])
		@posts = Post.where(status: params[:status]).paginate(page: params[:page]) if params[:status].present?
		@posts = Post.where(city_id: params[:city_id]).paginate(page: params[:page]) if params[:city_id].present?
	end

и во вьхе указываю
<%= form_for all_post_path, :method => 'get' do |f| %>
					<%= f.collection_select :city_id, City.all, :id, :name, :prompt => "Выберите город" %>
					<%= render @posts %>
  				<%= submit_tag "Search", :name => nil %>
  				<% end %>

post.rb
belongs_to :city
city .rb
has_many :posts

Все равно показывает абсолютно все посты помогите люди добрые чет не вкурю никак
  • Вопрос задан
  • 2277 просмотров
Решения вопроса 1
@vsuhachev
У вас проблемы с логикой, должно быть как-то так
def post_all
  @posts = Post.all
  @posts = @posts.where(status: params[:status]) if params[:status].present?
  @posts = @posts.where(city_id: params[:city_id]) if params[:city_id].present?
  @posts = @posts.paginate(page: params[:page])
end


И видимо еще проблема с именем параметра. Проверьте ваш код, указав в адресной строке браузера ?city_id=111. Поглядите development.log, убедитесь что имя параметра запроса именно city_id, а не posts[city_id].
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы