Rails使用表单对象渲染部分

时间:2018-05-06 09:13:27

标签: javascript ruby-on-rails ruby ajax

我想呈现部分' colordata'从下拉列表中选择:color后,因为它涉及Ajax。我无法观察到主页面的任何变化。在colordata partial中,甚至形式都是未定义的。

这是我的模型Order

的模式
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. 中定义
  3. 部分不会附加到课程批次中。
  4. 提前致谢。

1 个答案:

答案 0 :(得分:0)

要使用jquery附加部分,可以使用append方法。应在渲染内定义locals。 所以你可以这样解决:

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