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 在允许的提交参数列表中。