私のモデルには、次のような_form.html.erb
部分があります。DailyEntry
<%= simple_form_for(@daily_entry) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :breakfast %>
<%= f.input :snack_1 %>
<%= f.input :lunch %>
<%= f.input :snack_2 %>
<%= f.input :dinner %>
<%= f.input :water_intake %>
<%= f.input :workout %>
<%= f.input :notes %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
それぞれDailyEntry
がに属していUser
ます...つまり、各daily_entry
レコードにはuser_id
列があります。
コントローラーのアクションを複製せずに、ページからcurrent_user
a を追加できるようにしたいと思います。daily_entry
Home#Index
create
DailyEntry
では、どうすれば一石で二羽の鳥を殺すことができるでしょうか? つまり、新しく作成されたdaily_entry
レコードを現在のユーザーに割り当ててから、これをすべて自分のviews/home/index.html.erb
?
編集 1
各レコードをユーザーに割り当てる方法を知っています....DailyEntry
コントローラーcreate
アクションでは、これがあります:
def create
@daily_entry = current_user.daily_entries.create(params[:daily_entry])
respond_to do |format|
if @daily_entry.save
format.html { redirect_to @daily_entry, notice: 'Daily entry was successfully created.' }
format.json { render json: @daily_entry, status: :created, location: @daily_entry }
else
format.html { render action: "new" }
format.json { render json: @daily_entry.errors, status: :unprocessable_entity }
end
end
end
からこれを行う方法がわかりませんHome#Index.html.erb
。コントローラーのロジックを複製せずにこのフォームをレンダリングするにはどうすればよいHomeController
ですか?
編集 2
私もこれを試しました:
<%= render partial: "daily_entries/form", @daily_entry => current_user.daily_entries.build %>
しかし、私はまだこのエラーが発生します:
NoMethodError at /
undefined method `model_name' for NilClass:Class
行で:
<%= simple_form_for(@daily_entry) do |f| %>