在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/