2016-11-12 3 views
0

Я выполнил инструкции в this question's answer by emmanuel, и форма теперь находит идентификатор категории и отправляет его, но не находит идентификатор под категории, связанный с категорией, и не сохраняет его. .JQuery не может найти идентификатор под категории

В PARAMS принимаются, которые можно заметить на это, Parameters: {"utf8"=>"✓", "authenticity_token"=>"PTRTGGblf3HoWNXmanKl8TIP7F4j/QKTLN2Wd6oKSQWSXV27qioztUpXgb6YjHEroaWf8dgTzUIgQiRBK2XxWQ==", "post"=>{"title"=>"200k", "description"=>"FMxd123", "category_id"=>"2", "subcategory_id"=>"9"}, "commit"=>"Create Post"}

Затем он показывает сообщение об ошибке на моем экране (с моей ошибкой частичной), что «Категория Sub должен существовать выход SQL, как так:

(0.2ms) begin transaction 
Category Load (0.1ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]] 

    (0.0ms) rollback transaction 
    Rendering posts/new.html.erb within layouts/application 
    Rendered shared/_errors.html.erb (0.8ms) 
    Category Load (0.1ms) SELECT "categories".* FROM "categories" 
    CACHE (0.0ms) SELECT "categories".* FROM "categories" 

    SubCategory Load (0.1ms) SELECT "sub_categories".* FROM "sub_categories" WHERE "sub_categories"."category_id" = ? [["category_id", 1]] 
    SubCategory Load (0.1ms) SELECT "sub_categories".* FROM "sub_categories" WHERE "sub_categories"."category_id" = ? [["category_id", 2]] 
    SubCategory Load (0.1ms) SELECT "sub_categories".* FROM "sub_categories" WHERE "sub_categories"."category_id" = ? [["category_id", 3]] 

Мои Posts.coffee:

jQuery -> 
 
    subcat = $('#subcategory-select').html() 
 
    $('#category-select').change -> 
 
    cat = jQuery('#category-select').children('option').filter(':selected').text() 
 
    options = $(subcat).filter("optgroup[label='#{cat}']").html() 
 
    if options 
 
     $('#subcategory-select').html(options) 
 
    else 
 
     $('#subcategory-select').empty()

И та часть, где category_id и sub_category_ принимаются в форме с отдельными коробками:

<p> 
 
\t <%= f.label :category_id%> 
 
\t <%= f.collection_select(:category_id, Category.all, :id, :name,  
 
\t    { prompt: 'Select a category' }, { id: 'category-select' }) %> 
 
    </p> 
 
    <p> 
 
\t <%= f.label :subcategory_id%> 
 
\t <%= f.grouped_collection_select :subcategory_id, Category.all, :sub_categories, 
 
      :name, :id, :name, { include_blank: 'Select a sub category' }, 
 
               { id: 'subcategory-select' } %> 
 
    </p>

Confused о том, как он не работает, потому что это сделало мой category_id спастись, когда его не работает. Есть идеи?

+0

Вы можете разместить URL для кода, так что он может быть проверен непосредственно? – GraveyardQueen

+0

хотите ссылку github? – Jack

+0

Да, если это возможно – GraveyardQueen

ответ

1

Прошли через ваш код, и я нашел некоторые ошибки.

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

Как вы упомянули, это не проблема jquery.

Error1: -

Вы взяли имя subcategory модели, как SubCategory и таблица sub_categories, поэтому внешний ключ должен быть sub_category_id, но вы приняли subcategory_id.

Таким образом, либо вы должны изменить столбец в базе данных, либо указать рельсы, чтобы взять имя.

Ниже приводятся изменения, чтобы рассказать об этом рельсы.

post.rb

class Post < ApplicationRecord 
    belongs_to :category 
    # belongs_to :sub_category 
    belongs_to :sub_category, class_name: 'SubCategory', foreign_key: 'subcategory_id' 
end 

sub_category.rb

class SubCategory < ApplicationRecord 
    belongs_to :category 
    # has_many :posts, :primary_key => "subcategory_id" 
    has_many :posts, class_name: 'Post', primary_key: 'id', foreign_key: 'subcategory_id' 
end 

Проверьте линии комментировал.

Теперь в представлении пост-шоу также есть некоторые ошибки, которые я решил.

Error2: -

сообщений/show.html.Еврорадио:

<% content_for :title, @post.title %> 
<% navigation_add @post.title, post_path(@post) %> 
<h2 align="center">Title: <%= @post.title %></h2> 
<div class="well col-xs-8 col-xs-offset-2"> 
    <h4 class="center description"><strong>Description:</strong></h4> 
    <hr> 
    <%= simple_format(@post.description) %> 
    <hr> 
    <p>Post ID: <%[email protected]%></p> 
    <hr> 
    <div class="post-actions"> 
     <%= link_to "Edit this post", edit_post_path(@post), class: "btn btn-xs btn-primary" %> 
     <%= link_to "Delete this post", post_path(@post), method: :delete, 
     data: { confirm: "Are you sure you want to delete the post?"}, 
     class: "btn btn-xs btn-danger" %> 
     <%= link_to "View all posts", posts_path, class: "btn btn-xs btn-success" %> 
    </div> 
</div> 

Последнее, но не менее, ваш seeds.rb неправильно.

Error3: -

category_1 = Category.where(name:"cat1").first_or_create(name:"cat1") 
category_2 = Category.where(name:"cat2").first_or_create(name:"cat2") 
#SUB 
# 1 
SubCategory.where(name: 'g', category_id: category_1.id).first_or_create 
SubCategory.where(name: 'er', category_id: category_1.id).first_or_create 
#L2 
SubCategory.where(name: 'tu', category_id: category_2.id).first_or_create 
SubCategory.where(name: 'dual', category_id: category_2.id).first_or_create 

Добавьте этот сценарий в posts/new.html, чтобы получить выпадающий работу.

<script type="text/javascript"> 
$(document).ready(function() { 
    var subcat; 
    subcat = $('#subcategory-select').html(); 
    return $('#category-select').change(function() { 
    var cat, options; 
    cat = jQuery('#category-select').children('option').filter(':selected').text(); 
    options = $(subcat).filter("optgroup[label='" + cat + "']").html(); 
    if (options) { 
     return $('#subcategory-select').html(options); 
    } else { 
     return $('#subcategory-select').empty(); 
    } 
    }); 
}); 
</script> 

Вот рабочее изображение:

enter image description here

+0

Это работает, однако теперь jquery не отфильтровывает подкатегории, не связанные с основной категорией, в моем новом сообщении – Jack

+0

okay , позвольте мне решить и вас. – Sravan

+0

Большое спасибо, не лучше ли, но этот скрипт где-то еще, а не в html.erb? – Jack

Смежные вопросы