Рельсы рендеринга частичные с объектом формы - PullRequest
0 голосов
/ 06 мая 2018

Я хочу визуализировать частичные 'colordata' после выбора цвета: из выпадающего списка, поскольку он включает Ajax. Я не могу наблюдать какие-либо изменения на главной странице. Четная форма не определена в частичном colordata.

Вот моя схема модели заказа

create_table "orders", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.string "design"
    t.integer "quantity"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "color"
    t.string "lotnumber"
    t.float "consumption", limit: 24
    t.string "number"
  end

Вот вызов ajax

  $("select[name='order[color]']").change(function(){
     $.ajax({
       url: "colordata",
       type: "post",
       data:{
         "color": $(this).val()
       },
       dataType: JSON,
       success: function(data){
       }
     });
   });

Вот контроллер.

def colordata
    request.POST.each do |key, value|
      @color = value
    end
    @lotdetail= Master::Yarn.where('color like?', @color)
    respond_to do |format|
      format.js
    end
  end

Вот Colordata.js.erb

$(".lot").innerHTML += "<%= escape_javascript(render(partial: 'colordata'),locals: {form: form) %>"

Вот частичный _colordata.html.erb

<%= form.label :lotnumber %>
<%= form.collection_select(:lotnumber, @lotdetail, @lotdetail.lotnumber,@lotdetail.lotnumber,prompt: "Select the Yarn")%>

ошибки

  1. форма не определена в _colordata.html.erb
  2. Частичное не добавляется в класс лота.

Спасибо заранее.

1 Ответ

0 голосов
/ 06 мая 2018

Чтобы добавить частичное с помощью jquery, вы можете использовать метод append. locals должно быть определено внутри рендера. Таким образом, вы можете исправить это так:

$(".lot").append("<%= escape_javascript(render(partial: 'colordata', locals: { form: form })) %>")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...