Ich habe gerade angefangen, Rails zu lernen und versuche, meine erste Bewerbung zu machen. Nur frage mich, ob es in Ordnung ist Konstruktionen zu verwenden ähnlicheIst es sicher, Params über versteckte Tags in Rails 4 zu übergeben?
<%= 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 %>
Und Grund starke 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
Ist das nicht ein Thread? Kann der Benutzer den HTML-Eingabewert ändern und einige Informationen senden (wie eine Nachricht, die an eine andere Bestellung gesendet werden soll)?
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)
danken Sie. Ich habe diese Logik auf den Controller verschoben (check edit). Ich hoffe, es ist jetzt sicher genug. –