ruby on rails:将子记录添加到现有父级而不访问父级

srb*_*ert 1 ruby-on-rails

您将如何处理允许用户将子对象添加到父级而不需要他们导航到父级?

例如,添加期刊文章而不必导航到期刊并首先发布?父母也可能不存在.

我宁愿不让数据输入繁琐的用户,因此让他们找到一个日志或创建它然后找到或创建一个问题似乎有点多.我宁愿只有一个包含日记和问题字段的表单.如果不是因为用户对文章而不是期刊或问题感兴趣,那么逻辑就很简单了.

您是否只为孩子修改创建,以便找到或创建父母?

pjb*_*jb3 6

我假设您有一个期刊模型,其中包含许多文章和属于期刊的文章模型.首先,您应该创建通过期刊而不是通过期刊的文章控制器的路线:

ActionController::Routing::Routes.draw do |map|
  map.resources :journals, :has_many => :articles
  map.resources :articles
end
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用URL /articles/new或来访问文章控制器的新操作/journals/1/articles/new.然后在文章控制器中的新操作中,执行以下操作:

@article = Article.new(:journal_id => params[:journal_id])
Run Code Online (Sandbox Code Playgroud)

journal_id将文章的设置设置为传入的参数.如果没有传递参数,则journal_id将为nil.

在ERB模板中,您只需执行此操作即可创建下拉列表:

<%= f.collection_select :journal_id, Journal.all(:order => "name"), :id, :name, :include_blank => true %>
Run Code Online (Sandbox Code Playgroud)

然后用户可以选择日记,但如果传入日记,则会预先选择正确的值.