加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails远程表单验证

发布时间:2020-12-17 03:36:24 所属栏目:百科 来源:网络整理
导读:只是一个简单的问题,我跟着 railscast 对于远程真实工作来说,这很好,但我如何验证模型呢? 我有这个 %= form_for [:admin,@course],remote: true do |f| % div class="field" %= f.label :title,"The title:" %br / %= f.text_field :title % /div div class
只是一个简单的问题,我跟着 railscast

对于远程真实工作来说,这很好,但我如何验证模型呢?

我有这个

<%= form_for [:admin,@course],remote: true  do |f| %>
  <div class="field">
    <%= f.label :title,"The title:" %><br />
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :description,"Descripcion:" %><br />
    <%= f.text_area :description %>
 </div>
 <div class="actions">
   <%= f.submit "Send"%>
 </div>
<% end %>

我如何处理错误?

def create

  @course = Course.new(params[:course])

  respond_to do |format|
    if @course.save
      format.html { redirect_to admin_index_url,:notice=> 'Done !!' }
      format.js
    else
      format.html { flash.now[:alert] = "Not done" 
                    render "new"
                  }
      format.js
    end
  end        
end

任何想法为什么这不起作用?

解决方法

由于您的format.js块为空,并且通过以下方式调用create动作:remote => true,rails将执行默认操作,即查找create.js.erb以进行渲染,这可能是找不到的.

为了说明,将它放在app / views /?/ create.js.erb中的views目录中:

alert('HI');

然后将其放入您的控制器中以查看替代方案:

respond_to do |format|
  if @course.save
    format.html { redirect_to admin_index_url,:notice=> 'Done !!' }
    format.js { render :js=>'alert("done");' }
  else
    format.html { flash.now[:alert] = "Not done" 
                render "new"
                }
    format.js { render :js=>'alert("not done");' }
  end
end

所以现在,您只需要将错误消息发送回HTML / Javascript,最可能的方法是将其放入相应的.js.erb文件中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读