对于我的_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
能够在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| %>
答案 0 :(得分:2)
您的daily_entries控制器上的create
操作是您的表单操作指向的位置,而且不会发生变化。
要在索引页面上呈现表单,您所要做的就是在home_controller中构建@daily_entry
对象:
# home_controller.rb
def index
@daily_entry = DailyEntry.new
end
# home/index.html.erb
<%= render "daily_entries/form" %>