0

多くのProjectsを持つことができるClientモデルがあります。

これらは私のビューファイルです:

edit.html.erb

<%= form_for(@project) do |f| %>
  <%= render 'fields', :f => f %>
  <%= f.submit Create %>
<% end %>

_fields.html.erb

<div>
    <%= f.label :name %><br/>
    <%= f.text_field :name %>
</div>
<div>
    <%= f.label :client_id %><br/>
    <%= f.select(:client_id, current_user.client_names) %>
</div>

これは簡単で、うまく機能します。

しかし、クライアントビュー内からもプロジェクトを作成する方法はありますか?

たとえば、クライアントの編集ページで、上記の新規プロジェクトフォームにつながる、このクライアントの新規プロジェクトのリンクがあると便利ですが、それぞれのクライアントが選択ボックスで事前に選択されています。

これはなんとかできますか?

クライアント ID を新規プロジェクトフォームに渡す方法が見つからないようです。

助けてくれてありがとう!

4

2 に答える 2

2

これは確かに可能ですが、クライアント ID を new_projects_path に渡す必要があります。これは、クライアント内のプロジェクトへのルートをネストするか、クライアント ID を追加することで実行できます。違いは、次のような URL です。

/clients/1/projects/new
- or -
/projects/new?client_id=1

プロジェクト コントローラーでは、事前に選択されたクライアントで @project 変数をインスタンス化できるはずです。

@project = Project.new :client_id => params[:client_id]
于 2012-09-28T16:20:51.343 に答える
0

はい、あなたはこれを行うことができます。クライアントモデルでaccepts_nested_attributes_for:projectを使用します。これをネストすると、次のようなことができます

<%= f.fields_for :project do |p| %>
<fieldset>
<%= p.text_area :content %>
</fieldset>
<% end %>

ネストされたモデルフォームのrailscastsエピソード#196をチェックしてください。

于 2012-09-28T16:13:11.890 に答える