-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