Не удается найти места для показа на курсах - PullRequest
0 голосов
/ 17 мая 2019

Я новичок в ruby ​​и пытаюсь получить параметры locations, которые я назначаю в форме для отображения на странице course показа

Когда я запускаю команду course.locations= [location] в рельсахконсоль работает нормально, однако как мне заставить его показывать без этой команды для каждого course?Я пропустил где-нибудь шаг?

модель - course.rb

has_and_belongs_to_many :locations

модель - location.rb

has_and_belongs_to_many :courses

show.html.erb

<% @course.locations.each do |location| %>
    <%= link_to location.name, courses_path(:id => location.id, :table => "Location") %>
<% end %>

<%= @course.description %>

контроллер курсов

class CoursesController < ApplicationController
  def new
     @course = Course.new
  end

  def index
    @course = Course.all
  end

  def show
   @course = Course.find(params[:id])
  end

  def create

    @course = Course.new(course_perms)

    if @course.valid?
      @course.save
      flash[:success] = "Category Made Successfully - #{@course.name}"
      redirect_to @course
    else
      render 'new'
    end
  end

  def course_perms
    params.require(:course).permit([:name, :desc, :locations => [], :categories => []])
  end
end

форма

<%= form_for(@course) do |f| %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <%= f.label :desc %>
  <%= f.text_field :desc, class: 'form-control' %>

  <%= f.label :locations %>
  <%= f.select :locations, options_from_collection_for_select(@locations, :id, :name, course.locations.ids)%>

  <%= f.label :categories %>
  <%= f.select :categories, options_from_collection_for_select(@categories, :id, :name)%>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
<% end %> ```

1 Ответ

1 голос
/ 17 мая 2019

Вам нужно проверить консоль сервера, там вы могли видеть, что действие update / save, вероятно, приводит к ошибке parameter not allowed.Это потому, что вы вносите в белый список неправильные параметры:

class CoursesController < ApplicationController
  def new
     @course = Course.new
  end

  def index
    @course = Course.all
  end

  def show
   @course = Course.find(params[:id])
  end

  def create

    @course = Course.new(course_perms)

    if @course.valid?
      @course.save
      flash[:success] = "Category Made Successfully - #{@course.name}"
      redirect_to @course
    else
      render 'new'
    end
  end

  #also make this method private
  private

  def course_perms
    params.require(:course).permit([:name, :desc, :location_ids => [], :category_ids => []])
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...