首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在表单中包括Rails联接表字段?

在表单中包括 Rails 联接表字段可以通过以下步骤实现:

  1. 在应用程序的 config/application.rb 文件中设置 form_with 函数,该函数将创建一个包含数据库表单域的表单。
  2. 在控制器中定义一个 create 方法,该方法将调用 create 方法在数据库中创建新的数据记录。
  3. 在模型中定义一个 connection 方法,该方法将使用 ActiveRecord 连接到数据库。
  4. 在表单中定义数据库表单域,并使用 form_with 函数将其包含在表单中。

例如,在 app/controllers/posts_controller.rb 中:

代码语言:ruby
复制
class PostsController < ApplicationController
  def create
    @post = Post.new(post_params)

    if @post.save
      redirect_to @post, notice: 'Post was successfully created.'
    else
      render :new
    end
  end

  private

  def post_params
    params.require(:post).permit(:title, :content, :category_ids => [])
  end
end

app/models/post.rb 中:

代码语言:ruby
复制
class Post < ApplicationRecord
  has_many :comments
  belongs_to :category

  def connection
    ActiveRecord::Base.connection
  end
end

app/views/posts/new.html.erb 中:

代码语言:html+erb
复制
<%= form_with(model: post, local: true) do |form| %>
  <% if post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
        <% post.errors.each do |error| %>
          <li><%= error.first %>:</li>
          <ul>
            <li><%= error.last %></li>
          </ul>
        <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title %>
    <%= form.text_field :title, id: :post_title %>
  </div>

  <div class="field">
    <%= form.label :content %>
    <%= form.text_area :content, id: :post_content %>
  </div>

  <div class="field">
    <%= form.label :category_ids %>
    <%= form.collection_select(:category_ids, Category.all, :id, :name, { id: :post_category_ids }) %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

config/application.rb 中设置 form_with 函数:

代码语言:ruby
复制
config
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券