私はちょうどRailsの学習を始め、最初のアプリケーションを作ろうとしました。それはこのRails 4の隠しタグでparamsを渡すのは安全ですか?
<%= form_tag create_message_path, :method => :post do %>
<%= text_area_tag "message", nil %>
<%= hidden_field_tag "receiver", @order.printer.user.id %>
<%= hidden_field_tag "order_id", @order.id %>
<%= submit_tag "Submit" %>
<% end %>
そして基本的に強いのparamsのような構造を使用しても大丈夫かどう だけで不思議。
class MessagesController < ApplicationController
before_action :correct_user, only: [:update, :destroy]
def create
if current_user
@message = current_user.messages.build(message_params)
if @message.save
flash[:success] = "Сообщение создано"
redirect_to :back
else
redirect_to :back
end
else
redirect_to login_path
end
end
private
def message_params
params.permit(:message, :read, :receiver, :user_id, :printer_id, :order_id)
end
def correct_user
@message = current_user.messages.find_by(id: params[:id])
redirect_to root_url if @message.nil?
end
end
スレッドではありませんか?ユーザーはhtmlの入力値を変更し、いくつかの情報(他の注文に送るメッセージのようなもの)を送ることができますか?
EDIT 1:
@order = Order.find(params[:id])
message_item = {
user_id: current_user.id,
receiver: @order.printer.user.id,
message: params[:message],
order_id: @order.id
}
@message = current_user.messages.build(message_item)
ありがとうの主張値と同じであることを確認します。私はこのロジックをコントローラに移しました(チェックを編集)。今は十分安全だと思っています。 –