【问题标题】:Ruby on Rails: Submitting to table two different waysRuby on Rails:提交到表的两种不同方式
【发布时间】:2012-10-04 12:47:07
【问题描述】:

我有一个应用程序,用户可以在其中提交项目。对于每个字段,他们可以选择将新数据放入数据库中,或者从过去的项目中选择旧数据来填充该字段。

在我的新视图中,我无法让它为这段代码工作:

<%= form_for(@technol) do |tech| %>   

<%= fields_for(@project_technol) do |ab| %>

<%=  text_field_tag :tech, nil, :maxlength => 30 %>
OR<br />

<%= ab.label "All Tech"%> </br>
<%= collection_select( :technols, :id, Technol.all, :id, :tech, {}, {:multiple => true } ) %>
</div>
<% end %>

<% end %>

目前,用户可以从 collection_select 中选择许多技术,并与项目一起保存,但我试图让他们选择通过文本框输入自己的技术。

我的控制器操作:

def new
   @project = Project.new
   @technol = Technol.new(params[:tech])

   @all_technols = Technol.all
   tech_ids = params[:technols][:id].reject(&:blank?) unless params[:technols].nil?


   @project_technol = @project.projecttechnols.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @project }
    end
  end

创建

def create

    @project = Project.new(params[:project])


params[:technols][:id].each do |tech|

if !tech.empty?

@project.projecttechnols.build(:technol_id => tech) 

end

end

    respond_to do |format|
      if @project.save
        format.html { redirect_to @project, notice: 'Project was successfully created.' }
        format.json { render json: @project, status: :created, location: @project }
      else
        format.html { render action: "new" }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end

总而言之,我希望用户可以选择将新技术输入数据库,并从下拉列表中选择现有技术,然后将所有技术保存在项目中,并将输入的新技术保存在技术中表。

有什么想法吗?我是一个 Rails 菜鸟,所以在尝试回答时请记住这一点。任何帮助都感激不尽。提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby database controller


    【解决方案1】:

    使用令牌字段代替下拉和文本字段怎么样?

    检查这个修改后的 RailsCast: http://railscasts.com/episodes/258-token-fields-revised

    如果您没有订阅 RailsCast,以下是免费的原始屏幕截图: http://railscasts.com/episodes/258-token-fields

    【讨论】:

    • 我完全按照这个视频,但似乎没有加载自动完成。
    【解决方案2】:

    我建议您使用接受多个值的自动完成功能。这将改善您的视图,并且编码将很容易

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 2015-11-14
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多