在局部视图中实例化空模型?

用户名

在部分视图中具有表单的正确方法是引用一个空模型,以便按照模型上的定义正确处理验证。我是否应该在局部视图中实例化一个新的空模型并将其传递给表单?这是我正在使用的...

模型

class NewsletterSignup < ActiveRecord::Base
  def self.columns()
    @columns ||= [];
  end

  def self.column(name, sql_type = nil, default = nil, null = false)
    columns << ActiveRecord::ConnectionAdapters::Column.new(name, default, sql_type, null)
  end

  def persisted?
    false
  end

  column :first_name, :string
  column :last_name, :string
  column :email, :string
  column :zip, :string

  validates :first_name, :last_name, :email, :zip, :presence => true
  validates :email, :format => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
  validates :zip, :format => /^\d{5}$/
end

部分视图

<%
    signup = newsletter_signup.new
%>

<%= simple_form_for(signup, ...) do |f| %>
    <%= f.input :first_name, :label => "First Name:" %> 
    <%= f.input :last_name, :label => "Last Name:" %>
    <%= f.input :email, :label => "Email:" %>
    <%= f.input :zip, :label => "Zip:" %>

    ...
<% end %>

但是我似乎无法实例化这样的新模型。我认为我必须在视图中引用它。(请注意,我是Rails的新手,但拥有十年以上的专业软件开发经验,因此,对于某些Rails构造对我来说似乎陌生,我深表歉意,而我可能只是忽略了一些简单的东西!)

萨拉戈萨

如果您的控制器看起来像这样

def new
  Model.new
end

def create
  @model = Model.new(params[:model])

  if @model.save
    redirect root_path, notice: "Saved"
  else
    render action: 'new'
  end
end

def edit
  Model.find(params[:id])
end

def update
  if @model.update(params[:model])
    redirect root_path, notice: "Updated"
  else
    render action: 'edit'
  end
end

您可以拥有如下视图:

# new.html.erb
<%= render 'form' %>

# edit.html.erb
<%= render 'form' %>

# _form.html.erb
<%= form_for @model do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  ...
<% end %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在局部视图中实例化空模型?

来自分类Dev

模型在局部视图中为空

来自分类Dev

模型在局部视图中为空

来自分类Dev

使用局部视图时为空模型

来自分类Dev

使用局部视图时为空模型

来自分类Dev

在Backbone.js中的视图中实例化模型是一种反模式吗?

来自分类Dev

在 foreach 视图中模型为空

来自分类Dev

局部视图中的MVC模型转换,f__AnonymousType6

来自分类Dev

从foreach循环中将模型加载到局部视图中

来自分类Dev

如何在局部视图中获取模型属性名称

来自分类Dev

如何在局部视图中引用模型的属性?

来自分类Dev

局部视图中的MVC模型转换,f__AnonymousType6

来自分类Dev

在局部剃刀视图中正确使用模型

来自分类Dev

在局部视图中访问模型中的单个项目

来自分类Dev

在局部视图中使用不同的模型

来自分类Dev

在视图中重新实例化@EnvironmentObject

来自分类Dev

最小化视图中的实例变量

来自分类Dev

从局部视图返回的模型字段包含空值

来自分类Dev

ng-map:在局部视图中初始化地图

来自分类Dev

如何持久化传递给局部视图的数据模型?

来自分类Dev

在Rails show视图中映射和链接模型实例

来自分类Dev

Railsfields_for导致模型实例出现在视图中

来自分类Dev

在Rails show视图中映射和链接模型实例

来自分类Dev

局部视图为空

来自分类Dev

如何防止空实例出现在视图中?

来自分类Dev

在局部视图中填充表

来自分类Dev

在局部视图中填充表

来自分类Dev

如何将倍数和选择性模型传递到MVC剃刀局部视图中?

来自分类Dev

在MVC局部剃刀视图中未生成必需的属性(使用Edmx模型)