ruby-on-rails - 如何使用form_for将参数传递给 Controller ​​ruby on rails

标签 ruby-on-rails

我有一个用户模型和一个类(class)模型,用户可以在登录后为自己上传类(class)。

但是,我希望管理员能够为用户上传,以防用户不够精明。

我的想法是对用户上传和管理员上传使用相同的创建操作,并带有一个 if 语句。

管理员会在为他上传之前在 users/:id View 页面中选择用户:

<%= link_to 'Upload Course for User', new_course_path(user_id: params[:id]), class: 'btn btn-primary' %>

然后我就可以看到带有参数的创建页面:

http://localhost:3000/courses/new?user_id=10

我提交了这个表格
<%= form_for(@course, html: {class: "form-group"}) do |f| %>
...
<%= f.submit "Create Course", class: 'btn btn-primary' %>

到 Controller 中的创建操作:
def create
  @course = Course.new(course_params)
  @course.user_id = params[:user_id] || current_user.id
  if @course.save
    redirect_to course_path(@course), notice: 'The course has been created successfully!'
  else
  render 'new'
end

但是我从来没有得到 user_id 参数,总是只有 current_user.id,这是 admin_user 的 id,这不好。

我如何设法将 user_id 参数传递给 Controller ​​创建操作,以便它知道我正在尝试为另一个用户而不是我自己创建?有没有比我的逻辑更好的方法来处理这个问题?

谢谢!

最佳答案

你可以试试这个。

通知。

<%= form_for(@course, html: {class: "form-group"}) do |f| %>
<%= hidden_field_tag "course[user_id]", "#{@user_id}" %>
<%= f.submit "Create Course", class: 'btn btn-primary' %>

在 Controller 创建方法中。
def new
  @user_id = params.has_key?("user_id") ? params[:user_id] | current_user.id
  ##OR
  #@user_id = params[:user_id] || current_user.id
end

def create
  @course = Course.new(course_params)
  ## OR
  #@course.user_id = params[:user_id] || current_user.id
  if @course.save
    redirect_to course_path(@course), notice: 'The course has been created successfully!'
  else
    render 'new'
  end
end

private

def course_params
  params.require(:course).permit(:user_id)
end

关于ruby-on-rails - 如何使用form_for将参数传递给 Controller ​​ruby on rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616025/

相关文章:

sql - 按关联的表属性分组和排序

ruby-on-rails - Watir Webdriver(0.9.1)不再打开Firefox实例

ruby-on-rails - Rspec NameError,如何重构这段代码并正确使用路由助手?

ruby-on-rails - 推送到heroku-rails 3后 Assets 管道中断?

ruby-on-rails - Rails 4.2 迁移 postgres 更改不起作用

ruby-on-rails - 修改迁移中的记录会引发 authlogic 错误

ruby-on-rails - 在没有数据库交互的情况下使用 Rails 模型

ruby-on-rails - 我无法让 ckeditor 允许除基本属性之外的任何内容,并且无法关闭/配置高级内容编辑器 (rails)

ruby-on-rails - HAML 语法错误中的 Rails 表单

ruby-on-rails - 如何解决 circleci "bash: line 1: bundle: command not found"上的错误