ruby-on-rails - rails,在设置新对象时传入参数

标签 ruby-on-rails ruby

在rails中,是否可以在创建新对象时传入参数,并相应地设置一些值?

例如,如果我有一个包含项目列表的屏幕,以及在顶部创建新项目的链接。如果我要在"new"链接旁边放置一个“项目类型”的下拉列表,我将如何将该值传递给项目 Controller 上的新函数并设置为@item.item_type?


在下面JC回复后编辑

如果在 Controller 中我有以下内容:

@entry = Entry.new

if (params[:type])
  @entry.entry_type = params[:type]
end

创建新对象的链接是

<%= link_to "Make new article", {:controller => '/dashboard/entries', :action => :new}, :type => 1 %>

那么 new.html.erb 表单中的 entry_type 字段不应该设置为 1 吗?

最佳答案

您所描述的只是 Controller 的 new 操作的标准表单和相应的 create 操作以接收表单数据并创建对象。您可以生成脚手架文件以查看其工作原理的示例,但简而言之,它是这样的(假设是 RESTful 设计):

# new.html.erb
<% form_for @item || Item.new do |f| %>
  <%= f.select :type, { 'type1' => 1, 'type2' => 2 } %>
  <%= f.submit %>
<% end %>

# ItemsController#create
@item = Item.new(params[:item])
if @item.save
  redirect_to @item
else
  render :new
end

来自表单的数据在 Controller 的 params 散列中可用,并用于初始化新对象。

关于ruby-on-rails - rails,在设置新对象时传入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849533/

相关文章:

html - 为什么我在论坛中的评论没有保存到数据库中?

ruby-on-rails - 雪豹+ cucumber /webrat/rspec

ruby - 在 Chef 模板 (ERB) 中循环遍历数组

ruby-on-rails - 如何在 Ruby 中获取对象的名称?

ruby-on-rails - 验证 ssl 证书以验证访问我们私有(private) api 的服务?

ruby-on-rails - 在 Rails 中渲染大量 ActiveRecord 对象

ruby-on-rails - gem install bouncy-caSTLe-java 以获得全面支持

ruby - 在 Rails 中验证加拿大邮政编码的好方法是什么?

sql - 将 SQL 用于 rails 参数/值

ruby-on-rails - 如何为查询定义命名空间