在另一个视图中呈现表单,表单不显示

时间:2016-10-18 17:26:30

标签: javascript jquery ruby-on-rails ajax forms

我试图在模态中渲染表单。它正在呈现它,但form_for只显示输入,因此我无法定位提交,我需要它才能执行ajax。

广告组/视图/ edit.html.haml

%div(id="openModal" class="modalDialog")
    %div
        %a(href="#close" title="Close" class="close")
        = render "/cars/new"

汽车/视图/ new.html.haml

= form_for :car, :url => {:controller => 'cars', :action => 'create'}, :html => {:multipart => true,:id =>'car-form'} do |f|
%div(class="control-group")
    = label_tag             "Year"
    %br
    = text_field_tag    "year"
%br

%div(class="control-group")
    = label_tag             "make"
    %br
    %select{ :name => "make", :class => "chosen" }
        - @makes.each do |m|
            %option{:value => m.id}= "#{m.name}"
%br

%div(class="control-group")
    = label_tag             "Model"
    %br
    = text_field_tag    "model"
%br

%div(class="control-group")
    = label_tag             "Trim"
    %br
    = text_field_tag    "trim"
%br

%div(class="control-group")
    = label_tag             "Car Image(s)"
    %br
    = file_field_tag    "files[]"
%br


= submit_tag

由于我在不同的视图中渲染它并且有效,所以有点奇怪。

汽车/ backend.html.haml

%div(class="backend-unit")
%h2 Add Cars
= render 'new'

这是我的javascript。

$(document).ready(function(){
$('#car-form').on('submit',function(event){
    event.preventDefault();
    alert('hello');
});

});

Althoug永远不会打招呼,因为它没有form_for,因此我甚至无法定位提交。 知道为什么??

1 个答案:

答案 0 :(得分:0)

Rails接受相对于render路径的app/views路径,如果你有像app/views/cars/views/new.html.haml那样的愚蠢结构,那么你应该使用= render "cars/views/new"。由于您提到cars/backend.html.haml,因此views之后没有/car因此无法确定您的结构是什么样的。