【问题标题】:Storing field from drop down into table Ruby on Rails将字段从下拉列表存储到表 Ruby on Rails
【发布时间】:2017-12-02 06:10:18
【问题描述】:

我正在尝试将一组下拉菜单中的信息存储到一个我也可以存储和显示的表格中。我想知道如何将其放入新表中。我生成了一个新表,但我不确定如何存储它。单击按钮时出现 POST 错误。这是我的带有下拉菜单的 show.html.erb 文件:

  <p id="notice"><%= notice %></p>
  <%= form_for(Stc.new, url:{action:'new'}) do |f| %>
    <% @courses.each do |course| %>
  <%= render 'shared/error_messages' %>
  <%= label_tag course.title, course.title %>
  <%= f.label :semester %>
  <%= select_tag(:semester, options_for_select([['--------','-----------'], ['Fall', 'Fall'], ['Spring', 'Spring']])) %>
  <%= select_tag(:semester, options_for_select([['--------','-----------'], ['2012', '2012'], ['2013', '2013'], ['2014', '2014'], ['2015', '2015'], ['2016', '2016'], ['2017', '2017']])) %>
  <%end%>

   <%= f.submit "Student taken course", class: "btn btn-primary" %>

这是我在 stc.rb 中的表格:

  class Stc < ApplicationRecord
   belongs_to :course
   belongs_to :user
 end

【问题讨论】:

  • 请正确缩进代码
  • 不确定为什么要为同一个字段使用两个 select_tag?
  • Stc 模型中的列名是什么,你能在 schem.rb 中看到吗

标签: ruby-on-rails ruby database


【解决方案1】:

动作应该是create。通常你不需要指定动作:create,如果你从new动作渲染,rails会知道这一点。但我不确定您将如何处理控制器中的代码。你可以阅读更多here。 代码可以是这样的:

<%= form_for(Stc.new, url:{ action: 'create' }) do |f| %>
  <% @courses.each do |course| %>
    <%= render 'shared/error_messages' %>
    <%= label_tag course.title, course.title %>
    <%= f.label :semester %>
    <%= select_tag(:semester, options_for_select([['--------','-----------'], ['Fall', 'Fall'], ['Spring', 'Spring']])) %>
    <%= select_tag(:semester, options_for_select([['--------','-----------'], ['2012', '2012'], ['2013', '2013'], ['2014', '2014'], ['2015', '2015'], ['2016', '2016'], ['2017', '2017']])) %>
  <%end%>

  <%= f.submit "Student taken course", class: "btn btn-primary" %>
<% end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多