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

ruby-on-rails – 在Ruby on Rails中使用simple_form的不同方法

发布时间:2020-12-17 01:24:57 所属栏目:百科 来源:网络整理
导读:这些解决“包”编辑表单的方法有什么区别? 这些不同的方法如何影响应用程序的稳定性?它的多功能性? 哪些会遇到重大问题?为什么一个比另一个好? 通过“方法?” %= simple_form_for Pack.find(params [:id]),方法:: patch do | f | %GT; Via Object%
这些解决“包”编辑表单的方法有什么区别?

这些不同的方法如何影响应用程序的稳定性?它的多功能性?

哪些会遇到重大问题?为什么一个比另一个好?

>通过“方法?” <%= simple_form_for Pack.find(params [:id]),方法:: patch do | f | %GT;
> Via Object<%= simple_form_for @pack,url:pack_path(@pack),方法:: patch do | f | %GT;
>通过符号<%= simple_form_for:pack,方法:: patch do | f | %GT;
任何信息都会很好,我很想知道!

解决方法

1.和2. – 将表单助手绑定到模型实例

除了在2.你从实例变量引用模型实例而不是仅仅传递方法调用的返回值之外,基本相同.

最终结果是您获得了绑定到模型实例的表单.这意味着输入的值属性将包含模型中的值.

事实上,所有这些都会产生相同的结果:

<% 
  @pack = Pack.find(params[:id]) 
  pack = Pack.find(params[:id]) 

%>

<%= simple_form_for Pack.find(params[:id]),method: :patch do |f| %>
<%= simple_form_for @pack |f| %>
<%= simple_form_for pack |f| %>

但是第一个是不太理想的,因为你应该避免直接从视图中进行查询.视图应该从控制器接收数据并使用它来创建HTML并尽可能简单和声明.另一个主要问题是.find会引发ActiveRecord :: RecordNotFoundError,如果id无效,它应该在控制器中被捕获得更早.

3.使用符号调用表单助手:

<%= simple_form_for :pack,url: pack_path(@pack),method: :patch do |f| %>

这将创建一个“作用域”的表单,而不必将其绑定到特定的模型实例.举个例子:

<%= simple_form_for :thing do  |f| %>
  <%= f.input :name %>
<% end %>

这会生成以下HTML:

<form novalidate="novalidate" class="simple_form thing" action="/things/new" accept-charset="UTF-8" method="post">
  <input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="authenticity_token" value="F4r1gLuboZc1CKIdn9qac0sefxSVIvkjxk9KsD+sRl1wnVtEIKzHvWY0mPuLPvHI1Kcv3TIWD883YXHKXA+yJQ==" />
  <div class="input string required thing_name">
    <label class="string required" for="thing_name"><abbr title="required">*</abbr> Name</label>
    <input class="string required" type="text" name="thing[name]" id="thing_name" />
  </div>
</form>

注意name =“thing [name]”这意味着它将给出一个params哈希,就像我们有一个模型实例一样:

{
   thing: {
     name: "foo"
   }
}

这不是常用的(至少不正确),因为大多数时候你操作模型实例但它确实在搜索表单等特殊情况下使用.

请注意,Rails将尝试解析局部变量@thing,但如果它是nil则不会引发错误.因此,通常不建议使用此表格,因为它可以掩盖错误.

理解这种行为的最好方法是阅读ActionView::FormHelpers的文档,其中SimpleForm只是糖的基础.

(编辑:李大同)

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

    推荐文章
      热点阅读