使用操作视图和form_for创建URL表单字段的问题

时间:2014-02-07 14:52:19

标签: ruby-on-rails ruby forms form-for actionview

尝试创建一个表单字段,用户可以在其中提交网址:http://apidock.com/rails/v3.2.13/ActionView/Helpers/FormHelper/url_field

我收到一个错误:ActionView :: Template :: Error(#的未定义方法`homepage'

这是模型:

class Idea < ActiveRecord::Base
  has_many :comments
  mount_uploader :picture, PictureUploader
  attr_accessible :description, :name, :picture, :homepage
end

form.html.erb中的视图

<%= form_for(@idea) do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
<div class="field">
    <%= f.label :link %><br />
    <%= url_field("homepage") %><br />
  </div>
  <div class="actions">
    <%= f.submit %>

show.html.erb中的视图

<p><b>Name: </b><%= @idea.name %></p>
<p><b>Link:</b><%= @idea.homepage %></p>

ideas_controller

def create
    @idea = Idea.new(params[:idea])

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

def show
    @idea = Idea.find(params[:id])
    @comment = @idea.comments.build

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @idea }
    end
  end

2 个答案:

答案 0 :(得分:2)

基本上,当你在form_for中对块进行屈服和使用变量时,它已经设置了表单字段的关联。​​

即:

url_field('user', 'homepage')

相当于

f.url_field('homepage')

Check out the url_fieldform_for文档

答案 1 :(得分:0)

在表单构建器中使用url_field的IMHO是过时的并且容易出错。最终我能够找到:来自tenderlove的rails自动链接:https://github.com/tenderlove/rails_autolink加上来自spohlenz的https://github.com/spohlenz/tinymce-rails的tinymce-rails。通过这两个宝石,您可以构建功能齐全的表单字段并更有效地显示输出。希望这有助于其他人。