rails从视图获取值到控制器

时间:2013-07-17 04:05:48

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

从表单获取值到控制器时出现问题。我正在使用rails 4.0。

我的观点如下(new.html.erb)

<h1> POST A NEW LISTING </h>

    <% if current_user.nil? %>
        <h2>You must be logged in to view this page </h2>
    <% else %>
        <%= form_for [@user, @listing] do |f| %>
      <%= f.label :title, 'Title' %> <br />
      <%= f.text_field :title %>

      <%= f.label :general_info, 'General Information' %> <br />
      <%= f.text_area :general_info %>

      <%= f.label :included, 'Included' %> <br />
      <%= f.text_field :included %>

       <%= f.label :length, 'Length' %> <br />
      <%= f.text_field :length %>

      <%= f.label :price, 'Price' %> <br />
      <%= f.text_field :price %>

      <%= fields_for @tagging do |u| %>
        <%= u.label :tag, 'Tag' %> <br />
        <%= u.text_field :tag %>
      <% end %>

      <%= f.submit "submit" %>
    <% end %>

    <% end %>

我正在尝试添加标签。我有2个模型来处理标签:

模型 - &gt; tag.rb

class Tag < ActiveRecord::Base
    has_many :taggings
    has_many :listings, through: :taggings
end

模型 - &gt; tagging.rb

class Tagging < ActiveRecord::Base
  belongs_to :tag
  belongs_to :listing
end

标签跟踪标签名称本身,而标签则跟踪与列表的连接。

当用户提交表单时,他们将键入字符串标记,例如:“exampletag”。然后我需要搜索我的标签模型以获取该特定标签的tag_id。如果它存在,我需要将tag_id和listing_id放入标记中。目前我的listing_id是正确的,但即使从表单中访问:tag符号,我也遇到了问题。

这是我到目前为止所拥有的。当前不是这样的:tag_id是硬编码的,因为我无法获得@current_tag来返回我需要的信息。

listings_conroller.rb #create

  def create
    @user = User.find(current_user.id)
    @listing = @user.listings.build(listing_params)     
    #save before we get the listing ID

    if @listing.save

        @current_tag = Tag.where(:name => params[:tag])
          @taggings = Tagging.new(:tag_id => 1, :listing_id => @listing.id)

        if @taggings.save
            flash[:success] = "Success"
            redirect_to root_path 
        else
          render :action => 'new'
        end
    else
     render :action => 'new'
    end

  end

我认为@current_tag = Tag.where(:name =&gt; params [:tag])将返回正确的列表,但是当我提交具有数据库中名称的表单时,它似乎返回null。

1 个答案:

答案 0 :(得分:1)

得到了它!

由于标签嵌套在标签下,我需要访问参数:

params[:tagging][:tag]

而不是params [:tag]