Ruby on rails 如何在RubyonRails中传递控制器参数

Ruby on rails 如何在RubyonRails中传递控制器参数,ruby-on-rails,Ruby On Rails,当我写信息和按send(发送)选项时, 我想将学生id、教练id和消息存储到数据库中学生id和教练id正在保存,但消息字段未保存。它在数据库中显示null。我该如何解决这个问题 感谢您的帮助 控制器文件: class CourseQueriesController <ApplicationController def index @course_query = CourseQuery.new end def create # @course_query =

当我写信息和按send(发送)选项时, 我想将
学生id
教练id
消息
存储到数据库中<代码>学生id和
教练id
正在保存,但
消息
字段未保存。它在数据库中显示null。我该如何解决这个问题

感谢您的帮助

控制器文件:

class CourseQueriesController <ApplicationController
  def index 
    @course_query = CourseQuery.new
  end

  def create
    # @course_query = CourseQuery.new(course_query_params)
    @course_query = CourseQuery.where(student_id: current_student.id, coach_id: "2", message: params[:message]).first_or_create 
    if @course_query.save
      redirect_to course_queries_path, notice: 'Query was successfully send.'
    else
      render :new
    end
  end

  private

  def set_course_query
    @course_query = CourseQuery.find(params[:id])
  end

  # def course_query_params
  #   params[:course_query].permit(:message)
  # end
end

class-CourseQueriesController

似乎您不允许
:课程查询

尝试通过以下方式允许您的参数:

 def course_query_params
   params.require(:course_query).permit(:message)
 end
但是根据你传递参数的第二种方式(
params[:message]
),我认为你的参数结构有点不同。那么试试另一个:

 def course_query_params
   params.permit(:message)
 end

当您查看日志中生成的
params
时,您将看到
course\u query
散列中的
message
,因此
params[:message]
应该是
params[:course\u query][:message]

@course_query = CourseQuery.where(student_id: current_student.id, coach_id: "2", message: params[:course_query][:message]).first_or_create

你能给我看看你的控制器吗?提交表单时,服务器日志中是否有未经许可的参数消息?我编辑了上述代码。请选中“请显示发送给控制器的所有参数”不工作,我尝试了此操作,然后还存储了空值。若我在正在存储的消息中传递静态值。但是dynamic没有存储:(您能显示发送到控制器的所有参数吗?我看到您在参数根目录下有
:message
键,所以我更新了答案我也尝试了这个,不工作,我更新了上面的代码请检查
 def course_query_params
   params.permit(:message)
 end
@course_query = CourseQuery.where(student_id: current_student.id, coach_id: "2", message: params[:course_query][:message]).first_or_create