Ich bin ein Newbee in Ruby on Rails Codierung und ich habe versucht, einige Informationen aus der Sicht zu bekommen und die Ansicht zu aktualisieren. Aber ich habe mit diesem Problem konfrontiert.form_tag erzeugt einen anderen Pfad
Zuallererst habe ich Gruppenanmerkung, Benutzer und Abonnementmodelle in meiner Anwendung. Es gibt eine Viele-zu-Viele-Beziehung zwischen Gruppenhinweis und Benutzer, also benutze ich ein Abonnement, um group_notes_id und user_id zu behalten. Jetzt in meinem group_notes Ansicht zeigen, habe ich diesen Code:
<%= form_tag addUserToGroupNotes_group_notes_path do %>
<%= text_field_tag :eMail %>
<%= submit_tag "Add User to group note" %>
<% end %>
In meiner Routen-Datei i dieses:
Rails.application.routes.draw do
resources :group_notes
resources :group_notes do
post :addUserToGroupNotes, :on=>:collection
end
resources :items
resources :personal_notes do
member do
patch :complete
end
resources :items
end
devise_for :users
resources :items
root 'personal_notes#index'
end
ich meine Form-Tag wollen addUserToGroupNotes Methode in meiner Gruppe Note Controller aufzurufen. Ich habe für sie einen Weg Weg, aber wenn ich auf die Schaltfläche Senden klicken geht es wie folgt aus:?
- group_notes/2 UTF8 = ✓ & authenticity_token = 9zN5NHaPEtXAREwkhQY2iHrNJ% 2FA
statt dessen:
- group_notes/addUserToGroupNotes
Mein Group_Notes Controller-Code
class GroupNotesController < ApplicationController
before_action :find_group_note, only: [:show,:edit,:update,:destroy]
def index
if user_signed_in?
@group_notes = current_user.group_notes.order("created_at DESC")
end
end
def addUserToGroupNotes
eMail = params['eMail']
user = User.where(:email => eMail).take
@groupNoteID = session[:currentGroupNote]
record = Subscription.where(:user_id => user.id, :group_note_id => @groupNoteID).take
if user.nil? || !record.nil?
redirect_to group_notes_path
else
@newSubscription = Subscription.new(:user_id => user.id, :group_note_id => @groupNoteID)
@newSubscription.save
redirect_to group_note_path(@groupNoteID)
end
end
def show
@currentGroupNote = params[:id]
session[:currentGroupNote] = @currentGroupNote
currentSubscription = Subscription.where(:group_note_id => @currentGroupNote)
@users = []
currentSubscription.each do |subscription|
user = User.where(:id => subscription.user_id)
@users += user if user
end
@items = GroupItem.where(:group_note_id => @currentGroupNote)
end
def addItem
item = params['item']
@groupNoteID = session[:currentGroupNote]
@newItem = Item.new(:description => item, :group_note_id => @groupNoteID)
@newItem.save
redirect_to group_note_path(@groupNoteID)
end
def new
@group_note = current_user.group_notes.build
end
def create
@group_note = current_user.group_notes.build(group_note_params)
user = User.find(current_user)
groupNote = @group_note
groupNote.users << user #Adding user to group
if @group_note.save
redirect_to root_path
else
render 'new'
end
end
def edit
end
def update
if @group_note.update(group_note_params)
redirect_to group_note_path(@group_note)
else
render 'edit'
end
end
def destroy
@group_note.destroy
redirect_to root_path
end
private
def group_note_params
params.require(:group_note).permit(:title, :description, :noteType)
end
def find_group_note
@group_note = GroupNote.find(params[:id])
end
end
also was könnte das Problem dahinter sein? Danke für die Antworten.
Welche Version von Schienen verwenden Sie? Ich habe Ihren Code einfach kopiert und in meine App eingefügt, und es funktioniert einwandfrei. Bitte gib ganze routes.rb an. Datei – Ptr
Meine Version von Rails ist: 5.0.4, auch meine Frage mit vollem Code der Routes-Datei bearbeitet. Ich benutze Devise und mein Benutzermodell wird mit Devise Installation erstellt. Kann es das Problem sein? –
Seltsam. Es sollte gut funktionieren. Besonders komisch ist das ** 2 ** in 'group_notes/2'. Es sieht so aus, als hättest du diese Methode oder etwas irgendwie überschrieben. Gibt es 'method = 'post' in generiertem HTML? Ich denke, ich brauche auch Ihren Controller-Code oder wenn Sie unseren Code auf öffentlichen Repo auf GitHub oder BitBucket haben, senden Sie mir Link und ich werde es mir ansehen. – Ptr