Hallo an alle, Ich habe Stackoverflow gesucht, aber noch keine Antwort gefunden, also frage ich direkt.Ruby On Rails: Unerreichte Parameter mit hat viele
Ich habe eine einfache Tabelle namens Nachricht, die eine Benutzer-ID und einen Inhalt enthält. Ich habe jetzt eine zweite und eine dritte Tabelle, die die Nachrichten-ID aus der Nachrichtentabelle, eine Empfänger-ID und eine Sichtbarkeit enthält.
Wenn ich das Formular abschicke, habe ich immer den gleichen Fehler: Unerreichte Parameter: message_recipients, message_groups. Auch wenn ich sie in der Genehmigung hinzufügen ...
Lassen Sie mich Ihnen zeigen:
Message.rb
class Message < ActiveRecord::Base
include Tenantable
belongs_to :user
has_many :message_recipients
has_many :message_groups
validates :content, :user, presence: true
default_scope { order(created_at: :desc) }
end
message_recipient.rb
class MessageRecipient < ActiveRecord::Base
belongs_to :user
belongs_to :message
end
message_group .rb
class MessageGroup < ActiveRecord::Base
belongs_to :user_group
belongs_to :message
end
messages_controller.rb
class MessagesController < ApplicationController
# GET /messages/new
def new
@message = Message.new
end
# POST /messages
def create
@message = Message.new(message_params)
@message.user = current_user
respond_to do |format|
if @message.message_recipients.empty?
format.html { render :new}
else
if @message.save
@message.message_recipients.user = current_user
@message.message_recipients.message = @message
format.html { redirect_to authenticated_root_path, notice: t('messages.created') }
else
format.html { render :new }
end
end
end
end
private
# Never trust parameters from the scary internet, only allow the white list through.
def message_params
params.require(:message).permit(:content, { message_recipient_ids: [], message_group_ids: [] })
end
end
_form.html.erb
<% if @message.errors.any? %>
<div class="alert alert-danger" role="alert">
<h4><span class="glyphicon glyphicon-alert" aria-hidden="true"></span> <%= t('activerecord.errors.record_invalid', count: @message.errors.count) %></h4>
<ul>
<% @message.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form_for(@message, html: { class: 'form-horizontal' }) do |f| %>
<div class="form-group">
<%= f.label :message_recipients, class: 'col-sm-2 control-label' %>
<div class="col-sm-3">
<%= f.select :message_recipients, options_for_select(User.all.map { |s|[s.firstname + ' ' + s.lastname, s.id] }) %>
</div>
</div>
<div class="form-group">
<%= f.label :message_groups, class: 'col-sm-2 control-label' %>
<div class="col-sm-3">
<%= f.select :message_groups, options_for_select(UserGroup.all.map { |s|[s.name, s.id] }) %>
</div>
</div>
<div class="form-group">
<%= f.label :content, class: 'col-sm-2 control-label' %>
<div class="col-sm-3">
<%= f.text_area :content, class: 'form-control' %>
</div>
</div>
<div class="form-group">
<div class="col-sm-3 col-sm-offset-2">
<button type="submit" class="btn btn-primary"><%= t('actions.save') %></button>
</div>
</div>
<% end %>
noch nicht funktioniert ... Ich habe Erlaubnis zu so etwas wie params.require geändert (: Nachricht) .permit (: Inhalt,: message_recipients => []) aber immer noch nichts ... – Stiiks