gpt4 book ai didi

ruby-on-rails - 如何通过 Rails 3 中的子 Controller 创建父模型? (属于协会)

转载 作者:太空宇宙 更新时间:2023-11-03 17:26:58 24 4
gpt4 key购买 nike

我有两个资源:主题和帖子。我想弄清楚如何通过 Post Controller 创建主题。模型看起来像这样:

class Topic < ActiveRecord::Base
has_many :posts, :dependent => :destroy
validates :name, :presence => true,
:length => { :maximum => 32 }
attr_accessible :name
end

class Post < ActiveRecord::Base
belongs_to :topic, :touch => true
has_many :comments, :dependent => :destroy
accepts_nested_attributes_for :topic
attr_accessible :name, :title, :content, :topic
end

帖子/_form.html.erb:

<%= simple_form_for @post do |f| %>
<h1>Create a Post</h1>
<%= f.input :name, :label => false, :placeholder => "Name" %>
<%= f.input :title, :label => false, :placeholder => "Title" %>
<%= f.input :content, :label => false, :placeholder => "Content" %>
<%= f.input :topic, :label => false, :placeholder => "Topic" %>
<%= f.button :submit, "Post" %>
<% end %>

posts_controller.rb#create:

def create
@post = Post.new(params[:topic])
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
else
format.html { render :action => "new" }
end
end
end

使用 posts/_form.html.erb 我可以创建帖子,但不会同时创建相关主题。谁能告诉我为什么我会出现这种行为以及如何纠正它?我正在使用 Ruby 1.9.2、Rails 3.0.7 和 simple_form gem。

最佳答案

Railscasts 有几集是关于这个问题的。第16集(需订阅)

源代码: https://github.com/railscasts/016-virtual-attributes-revised

还有这一集 http://railscasts.com/episodes/57-create-model-through-text-field

views/products/_form.rhtml

<p>
<label for="product_category_id">Category:</label><br />
<%= f.collection_select :category_id, Category.find(:all), :id, :name, :prompt => "Select a Category" %>
or create one:
<%= f.text_field :new_category_name %>
</p>

模型/产品.rb

belongs_to :category
attr_accessor :new_category_name
before_save :create_category_from_name

def create_category_from_name
create_category(:name => new_category_name) unless new_category_name.blank?
end

我认为 Ryan 关于类别的解决方案比@nathanvda 的选项 1 更优雅。因为它在模型而不是 Controller 中处理数据。如果您需要在不同的 Controller /操作中执行相同的工作,您将看到好处。

关于ruby-on-rails - 如何通过 Rails 3 中的子 Controller 创建父模型? (属于协会),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com