Dodawanie dwóch stringów

Cześć,
Pobieram params[:search]

Jak będzie wyglądał kod, który przy każdym nowym parametrze params[:search] będzie go zapisywał do zmiennej historia ?

Powiedz coś więcej bo nie rozumiem(y). Co to za zmienna “historia”? Chcesz tą historię zapisywać w bazie danych?

[code=ruby]= form_tag att_dicts_path, :method => ‘get’ do
= text_field_tag :search, params[:search]
= submit_tag “Search”, :name => nil

  • if params[:search] == nil
  • else
    • wynik = params[:search]
    • list = File.read(Rails.root.join(‘public’ + AttDict.find(@ile).file.to_s)).split("\n")
    • p = anagrams(wynik, list)
    • p.each do |n|
      =n + (" ")[/code]
      Ten kod pozwala mi wyświetlić ostatnio wyszukany anagram, potrzebuję jeszcze zapisać ten wynik, aby wyświetlić 5 ostatnio wyszukiwanych anagramów z wynikami i nie wiem jak się do tego zabrać. Jak zapisywać te wyniki do bazy danych?

http://guides.rubyonrails.org/ prawdopodobnie nikt Ci nie da gotowego rozwiązania, samemu trzeba podłubać :slight_smile:

rozumiem ale czy zapisywanie zmiennych do bazy z poziomu widoku jest możliwe wogóle?
Bo nie wiem czy nie powinienem od nowa zacząć pisać aplikacji

[quote=regedarek][code=ruby]- if params[:search] == nil

  • else
    • wynik = params[:search]
    • list = File.read(Rails.root.join(‘public’ + AttDict.find(@ile).file.to_s)).split("\n")
    • p = anagrams(wynik, list)[/code]
      [/quote]
      No takich rzeczy to na pewno nie powinno być w widoku. Jeśli potrzebne Ci wyszukiwanie spróbuj użyć Ransack (nowa wersja meta_search)

Okej, spróbuje to przerzucić do controllera.

Właśnie nie wiem czy potrzebne mi wyszukiwanie bo to przecież tylko wpisanie słowa do formularza aby następnie na jego podstawie uruchomić metodę

- p = anagrams(wynik, list)

jak to więc nazwać :stuck_out_tongue:

zastanów się, czy pojedyńcze wyszukiwanie nie jest modelem.

[quote=regedarek][code=ruby]- if params[:search] == nil

tutaj jak dobrze rozumiem nic nie ma?

  • else
    • wynik = params[:search]
    • list = File.read(Rails.root.join(‘public’ + AttDict.find(@ile).file.to_s)).split("\n")
    • p = anagrams(wynik, list)[/code]
      [/quote]
      btw. cóż to za potwór?

[code=ruby]- if params[:search].present? # lepiej sprawdzić tak, wtedy jeżeli przypadkiem ustawiłby się np. pusty string i tak kod się nie wykona

  • wynik = params[:search]
    -# reszta kodu[/code]

dzięki zlw

możesz mnie jakoś naprowadzić jak zapisywać ten parametr p(czyli wyniki) w bazie?

nie zrozumiałem, przepraszam :stuck_out_tongue:
pzdr

Jeśli chcesz zapisać wynik w bazie, to musisz zrobić:

  1. klasę Result, która dziedziczy z ActiveRecord::Base,
  2. migrację, która utworzy tabelę results z odpowiednimi polam,
  3. zapisać dane do bazy kodem: Result.create(:nazwa_pola => wartosc).

Poza tym, dwie sprawy:

  1. zamiast pytać o tyle rzeczy na forum, poświęć kilka dni na przerobieni guides.rubyonrails.org, będzie szybciej,
  2. do prostego projektu powinieneś użyć prostego frameworku, np. Sinatra.

Jeśli chcesz używać Ruby on Rails, to musisz zrobić:
0. Poczytać o MVC: http://pl.wikipedia.org/wiki/Model-View-Controller

  1. Wejść na http://guides.rubyonrails.org/ i przeczytać parę pierwszych rozdziałów. Gdzieś w sieci krąży polska wersja tegoż
  2. Pooglądać railscasty.
  3. Zapomnieć o PHP :wink:

Wybacz, regedarek, jeśli uraziłem, ale sądząc po liczbie Twoich postów na forum, możnaby oczekiwać, że już zapoznałeś się z powyższymi.

Co do mojej sugesti:

Każde wyszukiwanie możesz traktowac jako osobny model Search (tabela searches w bazie danych). Możesz go wygenerować poleceniem:

rails g model Search query:string

model może wyglądać np. tak:

class Search < ActiveRecord::Base def self.recent(limit=5) order('created_at DESC').limit(limit).map(&:query) end end
W kontrolerze, w akcji w której WYKONUJESZ wyszukiwanie (jest dostępny params[:search]):

  Search.create!(:query => params[:search])

W kontrolerze, w akcji, gdzie chcesz wyświetlać, ostatnie wyszukiwania:

  @recent_searches = Search.recent # lub Search.recent(10)

w widoku bedziesz miał tablicę stringów z ostatnimi wyszukiwaniami.

Jeśli czegoś nie rozumiesz, odsyłam do linków z pierwszej części posta :slight_smile: