Недопустимый параметр:: user_id, даже если он уже разрешен

Я работаю в приложении Rails, где фото и пользователь являются основными моделями. Они связаны, фотография принадлежит пользователям, а у пользователя много фотографий.

Через API (Почтальон) я могу правильно создавать новые записи для фотографий с user_id. Однако я не могу сделать то же самое через интерфейс, так как я получаю эту ошибку

Недопустимый параметр::user_id

photos_controller.rb

      class Api::PhotosController < ApplicationController

    skip_before_action :verify_authenticity_token

    respond_to :json
    
    # before_action :set_photo
   
    def index
        photos = Photo.all
        render json: photos, status: 200
    end

    def show
    end

    def create
        photo = Photo.new(
            title: photo_params[:title],
            image: photo_params[:image],
            user_id: photo_params[:user_id]
        )
        if photo.save
            render json: photo, status: 200
        else
            render json: {error: "there was an error"}
        end
    end

    private
        def photo_params
            params.permit([
                :title,
                :image,
                :user_id
            ])
        end        
        def set_photo
            @photo = Photo.find(params[:id])
        end

end

форма для фото

      <%= form_with(model: photo, local: true) do |form| %>
<% if photo.errors.any? %>
<div id="error_explanation">
    <h2><%= pluralize(photo.errors.count, "error") %> prohibited this photo from being saved:</h2>

    <ul>
        <% photo.errors.full_messages.each do |message| %>
        <li><%= message %></li>
        <% end %>
    </ul>
</div>
<% end %>

<div class="form-group">
    <%= form.label :image %>
    <%= form.text_field :image, class: 'form-control' %>
</div>

<div class="form-group">
    <%= form.label :title %>
    <%= form.text_field :title, class: 'form-control' %>
</div>

<div class="form-group">
    <%= form.label :user_id %>
    <%= form.number_field :user_id, class: 'form-control' %>
</div>

<div class="form-group">
    <% if photo.persisted? %>
    <div class="float-right">
        <%= link_to 'Destroy', photo, method: :delete, class: "text-danger", data: { confirm: 'Are you sure?' } %>
    </div>
    <% end %>

    <%= form.submit class: 'btn btn-primary' %>

    <% if photo.persisted? %>
    <%= link_to "Cancel", photo, class: "btn btn-link" %>
    <% else %>
    <%= link_to "Cancel", photos_path, class: "btn btn-link" %>
    <% end %>
</div>
<% end %>

образец звонка через почтальона

и вывод через консоль rails для этой последней записи

      3.0.0 :002 > Photo.last
  Photo Load (16.6ms)  SELECT "photos".* FROM "photos" ORDER BY "photos"."id" DESC LIMIT $1  [["LIMIT", 1]]
 => #<Photo id: 31, image: "sampleforSO", title: "sampleforSO", created_at: "2021-02-06 15:02:05.153170000 +0000", updated_at: "2021-02-06 15:02:05.153170000 +0000", user_id: 1> 
3.0.0 :003 > 

PS: Работа с:

Rails версии 6.1.1Ruby версии ruby ​​3.0.0p0

0 ответов

Другие вопросы по тегам