在 Rails 中从 Ajax 渲染表单部分

yon*_*eng 6 javascript ajax ruby-on-rails

我有一个如下图所示的表格:

带有部分的表格

然后我想从 ajax 调用渲染这个部分: from .js.erb。但我不知道如何将对象从部分传递给 f。见下图:

如何将对象传递给 f:

文件.js.erb

7ur*_*m3n 2

添加:remote => true它会使按钮异步(Ajax 调用)。

索引.html.erb

<%= link_to "Add Journal", new_journal_path, remote: true, class: 'new_journal_button'%>
Run Code Online (Sandbox Code Playgroud)

新js.erb

$('.new_journal_button').after("<%= j render('form') %>");
$('.new_journal_button').hide();
Run Code Online (Sandbox Code Playgroud)

如果你想异步提交表单(Ajax调用)

_form.html.erb

<%= form_for(@journal, remote: true) do |f| %>
  <div class="field">
    <%= f.label "journal" %><br>
    <%= f.text_field :title, placeholder: 'Journal', autofocus: true, 'data-behavior' => 'submit_on_enter' %>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Journals_controller.rb

  def index
     @journal = Journal.new
     @journals = Journal.all
  end

  def create
    @journal = Journal.new(journal_params)
    respond_to do |format|
      if @journal.save
        format.html { redirect_to @journal, notice: 'Journal was successfully created.' }
        format.js
      else
        format.html { render :new }
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)