Rails: Как мне ссылаться на модель страницы, на которой я сейчас нахожусь? - PullRequest
0 голосов
/ 09 января 2020

вот что я пытаюсь сделать. Я создаю систему управления классом. На странице «назначения» я хочу, чтобы пользователи создавали представление из модели представлений. Я делаю это путем рендеринга части формы на этой странице. Я сделал эту часть. Проблема в том, когда я подаю заявку. Я хочу, чтобы он вытащил submission.assignment_id со страницы, на которой я сейчас нахожусь, которая является веб-сайтами / assignments / {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 %>

Дайте мне знать, если мне нужно предоставить более подробную информацию.

1 Ответ

0 голосов
/ 09 января 2020

Поскольку вы находитесь на странице назначений, вы можете получить там идентификатор и просто передать его как часть формы

<%= 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 класс сделать display:none;. Это будет go в вашей таблице стилей для всего сайта.

.hidden {display:none;}

У вас нет доступа к params[:id] страницы в SubmssionsController, поэтому вы получаете эту ошибку. Удалите строку, пытаясь найти ее.

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 находится в списке разрешенных параметров для отправки.

...