Witam wszystkich.
Potrzebuję aby ktoś pomógł naprowadzić mnie na odpowiedni tok działania.
Pracuję aktualnie nad aplikacją do oceniania filmów. Użytkownik będzie posiadał możliwość dodania filmu do bazy na dwa sposoby: wpisać wszystkie informacje samodzielnie, albo pobrać je z The Open Movie Database (www.omdbapi.com). Zrobiłem to w następujący sposób:
views/models/new.html.erb
<div class="col-md-6">
<% @movie_hash = flash[:info] %>
<% if @movie_hash.nil? %>
<% @movie_hash = Hash.new("") %>
<% end %>
<%= simple_form_for @movie, html: { class: 'form-horizontal' } do |f| %>
<%= f.input :title, input_html: {value: @movie_hash["Title"]} %>
<%= f.input :year, input_html: {value: @movie_hash["Year"]} %>
<%= f.input :country, as: :string, input_html: {value: @movie_hash["Country"]} %>
<%= f.input :plot, input_html: {value: @movie_hash["Plot"]} %>
<%= f.button :submit, label: "add new movie" %>
<% end %>
</div>
<div class="col-md-2">
<%= form_tag :action => 'get_movie_info' do %>
<%= text_area :myform, :movie_title %>
<%= submit_tag "Sarch" %>
<% end %>
</div>
movies_controller.rb
def new
@movie = Movie.new
end
def create
@movie = Movie.new(movie_params).save
redirect_to root_path
end
def get_movie_info
title_from_form = params['myform']['movie_title']
url = "http://www.omdbapi.com/?t=#{title_from_form}&y=&plot=short&r=json"
json_file = open(url) { |f| f.read }
@movie_info = JSON.parse(json_file)
redirect_to new_movie_path, :flash => { :info => @movie_info}
end
Pytania:
-
Gdzie powinienem umieścić kod, który pobiera informacje o filmie (get_movie_info), to wszystko chyba nie powinno znajdować się w movies_controller?
-
Czy przekazanie zmiennych z jednej akcji do drugiej za pomocą :flash jest poprawne?
-
Jakieś wskazówki jak to lepiej zaimplementować?