使用jquery ajax在form_for中渲染部分直通链接

时间:2013-06-22 06:55:03

标签: ruby-on-rails ajax ruby-on-rails-3 jquery form-for

HIE, 我在我的应用程序中使用了多步骤表单

我在form_for标签中提供了渲染部分的链接。

我的HTML代码是,

<div class="carousel-inner">
    <%= form_for @subscribe , :validate => true, :html=>{:id=>"main_form"} do |f| %>
    <ul class='carosel_buttons inline'>
        <li class='circle active'>
            <h2><%= link_to "1", date_path, :remote => true %></h2>
        </li>
        <li class='circle'>
            <h2><%= link_to "2", booking_path, :remote => true %></h2>
        </li>
    </ul>
  <div class="item">
    <%= render "#{@subscribe.current_step}_step", :f => f %>
  </div>
</div>

我想使用ajax使用link_to标记在点击“1”时呈现日期部分。

现在我的控制器了,

def date
  respond_to do |format|               
    format.js
  end
end

并将相应的date.js.erb文件另存为

$('.item').html("<%= escape_javascript(render 'date_step', :f => f ) %>");

部分文件

<div class="field offset2" id="date">
  <%= f.label :date %><br />
  <%= f.hidden_field :start_date, :id=>"set_start_date" %>
  <%= f.hidden_field :end_date, :id=>"set_end_date" %>
  <div id='datepicker'> </div>
</div>

但是当我点击1时,

ActionView :: Template :: Error(未定义的局部变量或方法`f'代表#&lt;#:0x007fb87ae09748&gt;):     1:$('。item')。html(“&lt;%= escape_javascript(render'date_step',:f =&gt; f)%&gt;”);

我知道这是因为在我的js.erb文件中我无法链接:f =&gt; f ...

你能告诉我怎么做。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

在你的html中,你正在使用@subscribe对象并将其传递给f,但是f没有在日期控制器的范围内定义,也没有在date.js.erb中定义。

我建议在部分(包含form_for帮助器)和控制器(在日期函数中)中呈现所有表单,您可以使用Subscribe.new设置@subscribe变量或使用params(订阅。找到(PARAMS [:ID])

如果此解决方案不适合您,请告诉我!