Rails 4-嵌套的路线和表单参数

msdundar

当我尝试在Rails4应用程序中创建一个新的“参与”时,我的参数似乎出了点问题。实际上,这不会在应用程序中引起任何问题(或者我没有注意到),但是我仍然想修复它。您可以看到2个“ examination_id”参数,其中一个为null,另一个等于1。

请求参数:

{"utf8"=>"✓",
 "authenticity_token"=>"XZ71eV0zxrnTBilzvEtLlHLwoAb+qKdDfxOHjrAHUPg=",
 "participation"=>
   {
    "language_preference"=>"Türkçe",
    "exam_center_preference"=>"1",
    "disability"=>"1",
    "user_id"=>"1",
    "examination_id"=>""
   },
 "commit"=>"Sınava Başvur",
 "examination_id"=>"1"
}

routes.rb:

resources :examinations do
  resources :participations do
    member do
      get :update_profile_information
    end
  end
end

Partition.rb:

class Participation < ActiveRecord::Base
  belongs_to :user
  belongs_to :examination
  before_save :verification_key_generator
end

entrys_controller.rb:

class ParticipationsController < ApplicationController

  before_filter :authenticate_user!
  before_action :set_participation, only: [:show, :edit, :update, :destroy]
  before_filter :get_examination

  def get_examination
    @examination = Examination.find(params[:examination_id])
  end

  def index
    @participations = @examination.participations
  end

  def show
    @participation = @examination.participations.find(params[:id])
  end

  def new
    @participation = Participation.new
  end

  def create
    @participation = @examination.participations.new(participation_params)
    @participation.user = current_user
    respond_to do |format|
      if @participation.save
        format.html { redirect_to [@examination, @participation], notice: 'Başvuru işlemi başarıyla tamamlandı!' }
        format.json { render action: 'show', status: :created, location: [@examination, @participation] }
      else
        render 'new'
        format.html { render action: 'new' }
        format.json { render json: @participation.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    respond_to do |format|
      if @participation.update(participation_params)
        format.html { redirect_to [@examination, @participation], notice: 'Başvurunuz Başarıyla Güncellendi!' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: participation.errors, status: :unprocessable_entity }
      end
    end
  end

  private
    def set_participation
      @participation = Participation.find(params[:id])
    end

    def participation_params
      params.require(:participation).permit(:user_id, :examination_id, :payment_status, :language_preference, :exam_center_preference, :disability)
    end
end

app / views / participations / _form.html.erb:

<%= simple_form_for([@examination, @participation], html:{class: "well"}) do |f| %>
  <%= f.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } %>
  <%= f.input :examination_id, as: :hidden %>
  <%= f.input :language_preference, collection: ["Türkçe", "İngilizce", "Rusça"], label: 'Sınav Dili Tercihi' %>
  <%= f.input :exam_center_preference, collection:ExamCenter.all, label: 'Sınav Merkezi Seçiniz', label_method: :city %>
  <%= f.input :disability, inline_label: 'Yardımcı İstiyorum', label: false %>
  <%= f.button :submit, "Sınava Başvur" %>
<% end %>

app / views / participations / new.html.erb:

<%= simple_form_for([@examination, @participation]) do |f| %>
  <%= f.error_notification %>
  <%= f.input :language_preference, collection: ["Türkçe", "İngilizce", "Rusça"], label: 'Sınav Dili Tercihi' %>
  <%= f.input :exam_center_preference, collection:ExamCenter.all, label: 'Sınav Merkezi Seçiniz', label_method: :city %>
  <%= f.input :disability, inline_label: 'Yardımcı İstiyorum', label: false %>
  <%= f.input :user_id, :as => :hidden, :input_html => { :value => current_user.id } %>
  <%= f.input :examination_id, as: :hidden %>
  <%= f.button :submit, "Sınava Başvur" %>
<% end %>

马诺吉·蒙加(Manoj Monga)

使用时

<%= simple_form_for([@examination, @participation], html:{class: "well"}) do |f| %>

生成表单时,它将动作设置为,/examinations/[examination_id]/participations以便路由/动作将从examination_idurl本身知道

因此,您无需examination_id单独传递您要设置为的隐藏字段

<%= f.input :examination_id, as: :hidden %>

删除此隐藏字段后,请求参数将如下所示:

{"utf8"=>"✓",
 "authenticity_token"=>"XZ71eV0zxrnTBilzvEtLlHLwoAb+qKdDfxOHjrAHUPg=",
 "participation"=>
 {
   "language_preference"=>"Türkçe",
   "exam_center_preference"=>"1",
   "disability"=>"1",
   "user_id"=>"1"
 },
 "commit"=>"Sınava Başvur",
 "examination_id"=>"1"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4:嵌套表单

来自分类Dev

Rails 4:嵌套表单

来自分类Dev

Rails 4嵌套表单未在参数中传递嵌套属性

来自分类Dev

Rails 4嵌套表单未在参数中传递嵌套属性

来自分类Dev

Rails 4强参数和嵌套形式

来自分类Dev

Rails 4多个嵌套表单

来自分类Dev

表单,嵌套资源和路由错误Rails 4

来自分类Dev

带嵌套资源Rails的嵌套表单4

来自分类Dev

带嵌套资源Rails的嵌套表单4

来自分类Dev

Rails 4多重嵌套形式和强参数

来自分类Dev

Rails 4-路线和路径

来自分类Dev

具有simple_form和浅层嵌套资源的Rails 4动作路线

来自分类Dev

动态路线Rails 4

来自分类Dev

嵌套表单无法保存Rails 4

来自分类Dev

Rails 4中与嵌套表单的多对多关系-不允许的参数错误

来自分类Dev

Rails 4中与嵌套表单的多对多关系-不允许的参数错误

来自分类Dev

Rails 4强参数嵌套资源

来自分类Dev

在Rails 4中检查嵌套参数

来自分类Dev

Rails 4-遍历嵌套的JSON参数

来自分类Dev

Rails嵌套路线表单问题

来自分类Dev

Rails 4浅层路线资源表单提交不起作用

来自分类Dev

Rails 4嵌套的资源/路线...几乎在那里...?

来自分类Dev

在Rails 4中分配具有强参数的参数和嵌套模型

来自分类Dev

Rails 4嵌套表单Simple_form_for和simple_field_for

来自分类Dev

带有has_many,通过和多个选择的Rails 4嵌套表单

来自分类Dev

使用simple_form和rails创建多个嵌套表单4

来自分类Dev

带有参数的rails 4路线

来自分类Dev

带有参数的rails 4路线

来自分类Dev

Rails 4浅层路线菜单参数未定义错误