Передача формы как локального в ajax, визуализированный частично в Rails 5 - PullRequest
2 голосов
/ 28 октября 2019

Я просмотрел все и не могу найти решение, которое работает.

Соответствующий контроллер (profit_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 } ) %>");

Маршруты:

    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 } ) %>");

Заранее спасибо.

1 Ответ

2 голосов
/ 28 октября 2019

В методе fetch_market вы должны отредактировать form = params["form"] в @form = params["form"]. Вы были объявлены локальным var, поэтому ваш код не работает. И имя файла должно быть fetch_market.js.erb)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...