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 ...
你能告诉我怎么做。
提前谢谢。
答案 0 :(得分:0)
在你的html中,你正在使用@subscribe对象并将其传递给f,但是f没有在日期控制器的范围内定义,也没有在date.js.erb中定义。
我建议在部分(包含form_for帮助器)和控制器(在日期函数中)中呈现所有表单,您可以使用Subscribe.new设置@subscribe变量或使用params(订阅。找到(PARAMS [:ID])
如果此解决方案不适合您,请告诉我!