-1
我是一個Ruby on Rails編碼的新手,我試圖從視圖中獲取一些信息並更新視圖。但我遇到過這個問題。form_tag生成不同的路徑
首先,我在我的應用程序中有組註釋,用戶和訂閱模型。組注與用戶之間存在多對多關係,因此我使用訂閱來保留group_notes_id和user_id。現在在我的group_notes表明觀點,我有這樣的代碼:
<%= form_tag addUserToGroupNotes_group_notes_path do %>
<%= text_field_tag :eMail %>
<%= submit_tag "Add User to group note" %>
<% end %>
在我的路線文件,我有這樣的:
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
我希望我的表單標籤調用addUserToGroupNotes方法在我的組注意控制器。我創建了一個路由路徑,但是當我點擊提交按鈕,它是這樣的:?
- group_notes/2 UTF8 =✓& authenticity_token = 9zN5NHaPEtXAREwkhQY2iHrNJ%2FA
,而不是這樣的:
- group_notes/addUserToGroupNotes
我Group_Notes控制器代碼
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
那麼背後有什麼問題呢?感謝您的答案。
您使用的是哪種版本的導軌?我只是將你的代碼複製並粘貼到我的應用程序,它工作得很好。請提供整個routes.rb文件 – Ptr
我的Rails版本是:5.0.4,還用完整的路由文件代碼編輯了我的問題。我使用設計和我的用戶模型創建與設計安裝。這可能是問題嗎? –
奇怪。它應該工作得很好。特別奇怪的是這個** 2 **在'group_notes/2'中。它看起來像你有某種方式重寫這個方法什麼的。生成的html中是否有'method ='post''?我想我還需要你的控制器代碼,或者如果你有我的代碼在github或bitbucket上的公共回購只是給我鏈接,我會看看它。 – Ptr