无法提交表单



我想基于某些参数创建一个新对象。

在我的新.html.haml 中

%table
   %thead
      %tr
        %td
          = f.label: type
         %td
           = select_tag :question_type, options_for_select
    %tbody#content

javascript:

$('#question_type').change(function(){
     $.ajax({
        data: { question_type: $(this).val() },
        url: window.location.href,
        dataType: 'script'
     });
  });

在我的新.js.haml 中

$('#content').html("#{escape_javascript(render(:partial => "question_form"))}");

_question_form.html.haml

= form_for @question, :url => {:action => "create"} do |f|
  %tr
    %td{:style => 'text-align:right;'}
      = f.label :name
    %td
      = f.text_field :name
  %tr
    %td
    %td
      = f.button :Submit, :value => 'Create'

在我的控制器中

def new
   @question = Question.new
   respond_to do |format|
     format.html
     format.js
   end
  end
  def create
   @question.save
   respond_to do |format|
     format.html (redirect_to questions_path)
     format.js
   end
  end

一切都很好,但输入问题名称后我无法提交表格。如何提交此表格?

问题在于html结构。你应该把表格放在桌子外面。

= form_for @question do |f|
  %table

请注意,这将提交您可以在创建操作中忽略的问题类型

更新:

# new.html.haml
#form-content= render 'question_form'
# _question_form.html.haml
= form_for @question, :url => {:action => "create"} do |f|
  %table
    %thead
      %tr
        %td= f.label: type
        %td= select_tag :question_type, options_for_select
    %tbody
      - if params[:question_type].present?
        %tr
          %td{:style => 'text-align:right;'}= f.label :name
          %td= f.text_field :name
        %tr
          %td
          %td= f.button :Submit, :value => 'Create'
# new.js.haml
$('#form-content').html("#{escape_javascript render("question_form")}");

相关内容

  • 没有找到相关文章

最新更新