Nano Hash - криптовалюты, майнинг, программирование

Rails 4 ищет несколько параметров

Я ищу поиск и нахожу результаты, если существуют два параметра, но меня отправляют на car_show_path, но должны быть результаты.

Модель

class Car < ActiveRecord::Base
  def self.search(car_number, car_model) 
    where(['car_number = ? AND car_model = ?', "%#{car_number}%", "%#{car_model}%"])
  end
end

Шоу контроллера

 @search = Car.search(params[:car_number], params[:car_model])
   if @search.present?
       @search
    else
     redirect_to car_path, notice: "Not a valid combination"
    end

Форма

<%= simple_form_for :search, url: car_show_path do |f| %>
  <%= f.input :car_number, :collection => @car.collect {|c| [c.number]}, :include_blank => false %>
  <%= f.input :car_model, placeholder: "Car Model" %>
  <%= f.button :submit, 'Generate', class: 'btn' %>
<% end %>

Ответы:


1

Ты делаешь это неправильно. Если вы посмотрите на хэш параметров, сгенерированный в журнале сервера, вы увидите что-то вроде этого :search => {:car_model => "value", :car_number => "Value"}. Это означает, что значения :car_model и :car_number нельзя получить с помощью params[:car_model] и params[:car_number], вместо этого вы должны использовать params[:search][:car_model] и params[:search][:car_number].

@search = Car.search(params[:search][:car_number], params[:search][:car_model])
if @search.present?
  @search
else
  redirect_to car_path, notice: "Not a valid combination"
end
04.03.2016
  • Мне удалось просмотреть запись car_model в журнале сервера, но коллекция car_number не принимается. Выпадающий выбор работает нормально, но он не передается. @car = Car.group(:car_number) — это переменная. 04.03.2016
  • @DollarChills, можете ли вы опубликовать здесь журнал сервера? 04.03.2016
  • Processing by CarController#show as HTML Parameters: {utf8=›✓, authenticity_token=›CzlNZlINufrHVGrkW9GLvZqiRWBtD2mplrlFuSMTKIEZ1fe5lK1UdEey1KlFSa0IOHgp0c2Po5GgkyZkgPbkOA==, search=›{car_number=›, car_model=›Toyota}, commit=›Generate} Auslot Load (0.3ms) SELECT cars. * ОТ cars ГДЕ (car_number = '' AND car_model = 'Toyota') Перенаправлено на localhost:3000/cars Завершено 302 Найдено за 1 мс (ActiveRecord: 0,3 мс) 04.03.2016
  • Я думаю, что выбор коллекции работает по-другому в рельсах 4, могу ошибаться. 04.03.2016
  • @DollarChills Попробуйте изменить <%= f.input :car_number, :collection => @car.collect {|c| [c.number]}, :include_blank => false %> на <%= f.input :car_number, :collection => @car, :include_blank => false %> 04.03.2016
  • Я решил это. Я удалил скобки вокруг [c.number] в своей коллекции, и это сработало. Я дам ответ @Pavan, поскольку он помог мне с основными проблемами. Ваше здоровье! 06.03.2016

  • 2

    Я вижу код, который вы предоставили. Я считаю, что код, который вы написали, нуждается в некотором улучшении. Поэтому я переписал код, который может решить вашу проблему и привести к вашей цели. Вот :

    #/app/models/car.rb
    
    class Car < ActiveRecord::Base
      def self.search(cn, cm) 
        where('car_number = ? AND car_model = ?', cn, cm)
      end
    end
    
    #/app/controllers/cars_controller.rb
    
    class CarsController < ApplicationController
    
      def search
        @result = Car.search params[c_number], params[c_modal]
      end
    end
    
    
    #/app/views/cars/search.html.erb
    #you can generate similar form with simple_form_for
    
    <form action="/search" method="/get" >
      <input type="text" name="c_number"
      <input type="text" name="c_modal">
      <input type="submit" value="search">
    </form>
    
    <% if [email protected]? %>
      Not a valid combination
    <% end %>
    
    <% @result.each do |r|%>
      <%= r.car_number %>
      <%= r.car_modal %>
    <% end %>
    
    
    #/config/routes.rb
    
    get "/search" => "cars#search"
    

    Примечание. Приведенный выше код является лучшим из моей практики и не выполняется локально.

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

    05.03.2016

    3

    Вы вводите одни и те же значения в оба заполнителя из параметра запроса, который отправляется вашему методу поиска. Это не кажется правильным.

    28.05.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..