Как изменить логическое значение сообщения на странице шоу? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь настроить кнопку, которая будет отмечать сообщение как неприемлемое.

Я настроил скрытую форму для кнопки, которая установит логическое значение :flag на true, но это не работает в файле show. html .erb. Когда я отправляю кнопку, я получаю пустую страницу с надписью not allowed. Любая помощь будет оценена!

posts_controller.rb

class PostsController < ApplicationController
  before_action :authenticate_account!, except: [:show, :index]
  before_action :set_post, only: [:show, :edit, :update, :destroy]
  
def show
   @post = Post.find(params[:id])
end

def post_params
   params.fetch(:post, {}).permit(:title,:contact , :content, :category_id, :genre_id, :city_id, :instrument_id, :flag)
end

Скрытая форма в шоу. html .erb

<%= form_for @post, {:url => post_path(@post), :method=>:patch} do |f| %>
  <%= f.hidden_field :flag, value: true %>
  <%= f.submit 'flag', class: 'btn btn-warning' %>
<% end %>

миграция AddFlagToPost

class AddFlagToPosts < ActiveRecord::Migration[5.2]
  def change
    add_column :posts, :flag, :boolean, default: false
  end
end

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

В вашем routes.rb

resources :posts do
  patch "inappropriate", on: :member
end

Далее вам нужно определить действие в вашем controller

def inappropriate
  @post = Post.find(params[:id])
  @post.update(flag: true)
end

Затем в вашем view файле

<%= form_with url: post_inappropriate_url(@post) do |f| %>
  <%= f.submit "Flag" %>
<% end %>

Пожалуйста, проверьте URL-адрес, используя rails routes, а затем измените form url соответствующим образом.

0 голосов
/ 09 июля 2020

В способе установки значения скрытого поля допущена опечатка, следует использовать value: true вместо value: = true

<%= f.hidden_field :flag, value: true %>
...