Кнопка отправки формы не попадает в фильмы # создать в Rails

Я пытаюсь отправить форму в Rails, а она не создается в БД. Я пытался разместить binding.pry в действии контроллера, но я не достигаю этого. Можете ли вы взглянуть на мою форму ниже и мои действия контроллера и сообщить мне, если я делаю что-то не так?

<form>
<%= simple_form_for @movie do |f| %>

<div class="form-group">
  <%= f.input :title, placeholder: "Movie Title", input_html: { class: 'form-control' } %>
</div>

<div class="form-row">
  <div class="form-group col-md-6">
     <%= f.input :year, as: :date, 
        start_year: Date.today.year,
        end_year: Date.today.year - 100, 
        discard_day: true, order: [:year], 
        input_html: { class: 'form-control' } %>
  </div>

  <div class="form-group col-md-6">
     <%= f.input :genre, placeholder: "Genre", input_html: { class: 'form-control' } %>
  </div>
</div>

<div class="form-group">
   <%= f.input :poster, placeholder: "Poster URL", input_html: { class: 'form-control' } %>
</div>

<div class="form-row">
  <div class="form-group col-md-6">
     <%= f.input :director, placeholder: "Director",
        input_html: { class: 'form-control' } %>
  </div>

  <div class="form-group col-md-6">
     <%= f.input :rating, collection: 1..5, prompt: "1(bad) - 5(great)", input_html: { class: 'form-control' } %>
  </div>
</div>

<div class="form-group">
  <%= f.association :lists, as: :radio_buttons, input_html: { class: 'form-control' } %>
</div>

<div class="form-group">
  <%= f.input :plot, as: :text, placeholder: "Plot Summary", input_html: { class: 'form-control' } %>
</div>

<div class="form-group text-center">
  <%= f.button :submit, "Add Movie", class: "btn btn-primary col-md-4" 
%> 
</div>

<% end %>
</form>

Мои действия контроллера:

  def new
    @movie = Movie.new
  end

  def create
    binding.pry
    @movie = Movie.new(movie_params)
    if @movie.save
      redirect_to movie_path(@movie)
    else
      flash[:danger] = "Please try again!"
      redirect_to new_movie_path
    end
  end

  def movie_params
    params.require(:movie).permit(:title, :year, :genre, :poster, :director, :plot, :list_ids)
  end

Есть идеи здесь? Форма не будет отправлена.

1 ответ

Решение

Вам нужно добавить rating и, возможно, lists в ваш movie_params

Вы также можете очистить свой create метод и сделать его проще:

def create
  @movie = Movie.new(movie_params)
  if @movie.save
    redirect_to @movie
  else
    flash[:danger] = "Please try again!"
    render 'new'
  end
end

Вам не нужно использовать <form> при использовании simple_form.

Другие вопросы по тегам