0

我是 Ruby on Rails 的新手。我的问题可能听起来很奇怪,但我被困住了。我有一个在 html 页面上创建的表单。我用过render partial,但这种形式没有创造任何价值。这是我的控制器代码。

控制器.rb

before_filter :signed_in_user, only: [:create, :destroy]


    def create
        @suppliers = current_user.suppliers.build(params[:supplier_name])
        if @suppliers.save
            flash[:success] = "Supplier Saved!"
            redirect_to 'suppliers/home'
        else
            render 'suppliers/home'
        end
     end

    def destroy
    end

    def home
        if signed_in?
            @supplier  = current_user.suppliers.build
            @feed_items = current_user.feed.paginate(page: params[:page])
        end
    end

我的home.html.erb

 <div class="row">
    <aside class="span4">
      <section>
        <%= render 'suppliers/suppliers_form' %>
      </section>
    </aside>
    <div class="span8">
      <h3>Micropost Feed</h3>
      <%= render 'suppliers/feed_supplier' %>
    </div>
  </div>

我的_supplier_form.html.erb

<%= form_for(@supplier)  do |f| %>

  <div>
    <%= f.text_field :supplier_name, placeholder: "Add new Supplier" %>
  </div>
  <%= f.submit "Add", class: "btn btn-large btn-primary" %>
<% end %>

我的_feed_supplier.html.erb

<% if @feed_items.any? %>
  <ol class="microposts">
    <%= render partial: 'suppliers/feed_item', collection: @feed_items %>
  </ol>
  <%= will_paginate @feed_items %>
<% end %>

我的_feed_item.html.erb

<li id="<%= feed_item.id %>">
  <span class="user">
    <%= link_to feed_item.user.name, feed_item.user %>
  </span>
  <span class="content"><%= feed_item.supplier_name %></span>
</li>

请引导我走向正确的方向,如果还有其他需要,请询问。提前致谢

注意:所有提到的文件都在同一个文件夹中,即供应商。除了控制器文件

4

2 回答 2

2
form_for @supplier

将创建一个参数哈希,如

{ :supplier => { :supplier_name => '[some value you put in your form]' }}

所以创建动作应该使用

@suppliers = current_user.suppliers.build(params[:supplier])

没有参数 [:supplier_name]。

于 2013-07-25T07:26:28.487 回答
1

我认为对于部分,你不需要写suppliers/*,例如:

<%= render 'suppliers/suppliers_form' %>

可能只是

<%= render 'suppliers_form' %>

不知道为什么这会导致你的应用程序做它正在做的事情,但值得一试!

于 2013-07-25T07:05:23.177 回答