在 rails create controller (Rails 6) 中渲染 new.js.erb

Posted

技术标签:

【中文标题】在 rails create controller (Rails 6) 中渲染 new.js.erb【英文标题】:Render new.js.erb in rails create controller (Rails 6) 【发布时间】:2020-09-13 16:44:04 【问题描述】:

我正在尝试渲染 new.js.erb 以防验证失败。 我的rails create action中有这个

  def create
    @talent = Talent.new(talent_params)
    @job =  params[:job_id]
    @talent.job_id = @job
    respond_to do |format|
      if @talent.save
        flash[:notice] = "You have successfully completed your job application!"
        redirect_to jobs_path
      else
        format.html
        format.js  render "new" 
      end
    end
  end

在new.js.erb中,我有

$('<%= j render "form" %>').modal();

在_form.html.erb(new.js.erb中部分渲染的表单),我有

<div id="contact-modal" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <%= simple_form_for @talent, :url => job_talents_path(@job, @talent), :method => :post do |f| %>
        <div class="modal-body">
          <%= f.input :full_name, label: "Full Name", :autofocus => true %>
          <%= f.input :email, label: "Email" %>
          <%= f.input :mobile_number, label: "Mobile Number" %>
          <%= f.input :resume %>
          <%= f.input :cover_letter %>
          <%= f.submit 'Submit Application', class: "btn btn-success btn-lg btn-block upload-margin create-style"%>
        </div>
        <div class="modal-footer">
          <span style="float: left; color: #5DB1D1;">Goodluck with your application<i class="fas fa-hand-peace" aria-hidden="true"></i></span>
        </div>
      <% end %>
    </div>
  </div>
</div>

如果验证失败,控制器将无法呈现 new.js.erb。任何帮助解决这个问题将不胜感激

【问题讨论】:

当“控制器无法渲染new.js.erb”时,会发生什么? 什么也没发生,但我在堆栈跟踪中看到了这个“没有找到 TalentsController#create 的模板,渲染头:no_content 已完成 204 14 毫秒内没有内容(ActiveRecord:0.7 毫秒 | 分配:8343)”跨度> 在 new.js.erb 中,你是在告诉渲染什么,而不是在哪里渲染。 【参考方案1】:

其中一个问题可能是您不能将本地 rails 变量隐式传递给局部变量。这种将变量显式传递给部分的语法可能会对您有所帮助:

Rails 4 - passing variable to partial

【讨论】:

以上是关于在 rails create controller (Rails 6) 中渲染 new.js.erb的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Rails 将音频文件上传到 Cloudinary

Rails:从另一个控制器渲染 .js.erb?

失败/错误:使用Rspec发布#create testing

Rails Create--params说明

Rails:在哪里启用 Access-Control-Allow-Origin

如何在rails下的webrick中设置access-control-allow-origin?