将表单作为本地表单传递给 Rails 5 中渲染的部分 ajax

2024-05-07

我已经查遍了,找不到有效的解决方案。

相关控制器(profits_controller.rb):

def new_tabs
    @market = Market.order('mjsnumber').all.first
    @profit = Profit.new
    profit_types_markets_products
end

def fetch_market
    @market = Market.where(:id => params[:market_id]).first
    form = params["form"]
    respond_to do |format|
        format.js { render layout: false}
    end
end

相关视图(new_tabs.html.erb):

<%= simple_form_for @profit, :remote => true do |form| %> 
<% @markets.each_with_index do |market, i| %>
     <%= link_to market.nick, fetch_market_path(:market_id => market.id, :form => form, profit: @profit), :remote=>'true', :id => 'navBtn' + market.id.to_s, :class => 'd-flex flex-grow-1 align-content-center text-center nav-item nav-link ' + active(i).to_s + profit_nav_font_color(market.color).to_s, "data-toggle" => "pill", "roll" => "tab", "style" => "background-color: " + market.color.to_s + ";", remote: true %>
<% end %>
<%= render :partial => 'edit_partial_form', locals: { market: @market, form: form, profit: @profit } %>

相关部分(_edit_partial_form.html.erb):

<%= form.simple_fields_for :figures, :defaults => { :input_html => { :class => "floatTextBox" }}, remote: true do |figures_form| %>
    <%= figures_form.input "[test]" %>
<% end %>

相关JS(fetch_market.erb):

$("#edit_partial_form").html("<%= escape_javascript(render partial: 'edit_partial_form', locals: { market: @market, form: form, profit: @profit } ) %>");

Routes:

    get "/fetch_market" => 'profits#fetch_market', as: 'fetch_market'

它可以很好地呈现部分内容,并且链接似乎包含 FormBuilder 信息。当我单击链接并向控制器添加“放置参数”时,它会在那里显示参数。但是在控制台中加载部分时出现错误:

ActionView::Template::Error (undefined local variable or method `form' for #<#<Class:0x00007fdbd6453648>:0x00007fdbd68db5f8>
Did you mean?  fork):
    1: $("#edit_partial_form").html("<%= escape_javascript(render partial: 'edit_partial_form', locals: { market: @market, form: form, profit: @profit } ) %>");

提前致谢。


在 fetch_market 方法中你应该编辑form = params["form"] to @form = params["form"]。您被声明为本地变量,这就是您的代码不起作用的原因。文件名应该是fetch_market.js.erb)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将表单作为本地表单传递给 Rails 5 中渲染的部分 ajax 的相关文章

随机推荐