Rails: 如何引用当前所在页面的模型?
Rails: How do I reference the model of the page I'm currently on?
这就是我想要做的。我正在创建一个课堂管理系统。在 "assignments" 页面上,我希望用户从提交模型创建提交。我通过在该页面上呈现部分表单来做到这一点。我已经完成了那部分。问题是当我提交提交时。我希望它从我当前所在的页面 websites/assignments/{assignment_id} 中提取 submission.assignment_id。执行此操作的最佳方法是什么?
这是我尝试拉 assignment_id 的方法,但没有成功:
class SubmissionsController < ApplicationController
def new
@submission = Submission.new
end
def create
@assignment = Assignment.find(params[:id])
@submission = Submission.new
@submission.user_id = current_user.id
@submission.assignment_id = @assignment.id
if @submission.save
flash[:success] = "The submission was successfully submitted."
redirect_to units_path
else
flash[:success] = "Submission was not submitted correctly, please try again."
redirect_back(fallback_location: root_path)
end
end
def show
@show = Submission.find(params[:id])
end
end
这是提交的部分内容
<%= form_with model: @submission do |form| %>
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>
<div class="form-group" id="submitbutton">
<div align = "center">
<%= form.submit class: "btn waves-effect waves-light" %>
</div>
</div>
<% end %>
如果我需要提供更多详细信息,请告诉我。
因为你在作业页面上,你可以在那里获取 id 并将其作为表单的一部分传递
<%= form_with model: @submission do |form| %>
<%= form.text_field :assignment_id, value: @assignment.id, class: 'hidden' %>
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>
<div class="form-group" id="submitbutton">
<div align = "center">
<%= form.submit class: "btn waves-effect waves-light" %>
</div>
</div>
<% end %>
如果该字段显示,则必须添加 css 规则以使 hidden
class 执行 display:none;
。这将进入您的站点范围的样式表。
.hidden {display:none;}
您无权访问 SubmssionsController 中页面的 params[:id]
,这就是您收到该错误的原因。删除试图找到那个的行。
def create
@submission = Submission.new
@submission.user_id = current_user.id
if @submission.save
flash[:success] = "The submission was successfully submitted."
redirect_to units_path
else
flash[:success] = "Submission was not submitted correctly, please try again."
redirect_back(fallback_location: root_path)
end
end
而且,由于我看不到它,请确保 assignment_id
在允许的提交参数列表中。
这就是我想要做的。我正在创建一个课堂管理系统。在 "assignments" 页面上,我希望用户从提交模型创建提交。我通过在该页面上呈现部分表单来做到这一点。我已经完成了那部分。问题是当我提交提交时。我希望它从我当前所在的页面 websites/assignments/{assignment_id} 中提取 submission.assignment_id。执行此操作的最佳方法是什么?
这是我尝试拉 assignment_id 的方法,但没有成功:
class SubmissionsController < ApplicationController
def new
@submission = Submission.new
end
def create
@assignment = Assignment.find(params[:id])
@submission = Submission.new
@submission.user_id = current_user.id
@submission.assignment_id = @assignment.id
if @submission.save
flash[:success] = "The submission was successfully submitted."
redirect_to units_path
else
flash[:success] = "Submission was not submitted correctly, please try again."
redirect_back(fallback_location: root_path)
end
end
def show
@show = Submission.find(params[:id])
end
end
这是提交的部分内容
<%= form_with model: @submission do |form| %>
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>
<div class="form-group" id="submitbutton">
<div align = "center">
<%= form.submit class: "btn waves-effect waves-light" %>
</div>
</div>
<% end %>
如果我需要提供更多详细信息,请告诉我。
因为你在作业页面上,你可以在那里获取 id 并将其作为表单的一部分传递
<%= form_with model: @submission do |form| %>
<%= form.text_field :assignment_id, value: @assignment.id, class: 'hidden' %>
<div class="field">
<%= form.label :content %>
<%= form.rich_text_area :content %>
</div>
<div class="form-group" id="submitbutton">
<div align = "center">
<%= form.submit class: "btn waves-effect waves-light" %>
</div>
</div>
<% end %>
如果该字段显示,则必须添加 css 规则以使 hidden
class 执行 display:none;
。这将进入您的站点范围的样式表。
.hidden {display:none;}
您无权访问 SubmssionsController 中页面的 params[:id]
,这就是您收到该错误的原因。删除试图找到那个的行。
def create
@submission = Submission.new
@submission.user_id = current_user.id
if @submission.save
flash[:success] = "The submission was successfully submitted."
redirect_to units_path
else
flash[:success] = "Submission was not submitted correctly, please try again."
redirect_back(fallback_location: root_path)
end
end
而且,由于我看不到它,请确保 assignment_id
在允许的提交参数列表中。