ruby - 新手 Ruby on Rails - 从 View 将字符串传递给方法?

标签 ruby methods ruby-on-rails-3.1 controller feedzirra

我正在尝试在我的 add_feed View 中实现 feedzirra (良好的 Railcast: http://railscasts.com/episodes/168-feed-parsing ),但我遇到了一些麻烦。我希望用户能够在访问网站时添加提要。我认为它应该非常简单,我可以从控制台添加提要,但我还没有弄清楚如何将信息从表单传递到方法。

我的模型看起来像这样(几乎与railscast中的模型相同):

 def self.update_from_feed(feed_url)
  feed = Feedzirra::Feed.fetch_and_parse(feed_url)
  add_entries(feed.entries)
end

def self.update_from_feed_continuously(feed_url, delay_interval = 15.minutes)
 feed = Feedzirra::Feed.fetch_and_parse(feed_url)
 add_entries(feed.entries)
  loop do
    sleep delay_interval
   feed = Feedzirra::Feed.update(feed)
   add_entries(feed.new_entries) if feed.updated?
 end
end

private

def self.add_entries(entries)
  entries.each do |entry|
    unless exists? :guid => entry.id
      create!(
        :name         => entry.title,
        :summary      => entry.summary,
        :url          => entry.url,
        :published_at => entry.published,
        :guid         => entry.id
      )
    end
  end
end

我不太确定如何使用我的 Controller 和 View 将字符串传递到我的 self_update_from_feed(String) 方法。我的 Controller 当前如下所示:

 def add_feed
   @feed = String
 end

def new
   @feed = Feed.new

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

  def edit
    @feed = Feed.find(params[:id])
  end

  def create
    @feed = Feed.new(params[:feed])
    @feed.user_id = current_user.id

    respond_to do |format|
      if @feed.save
        if @feed.url != nil
          @feed.update_from_feed(:url)
        end

        format.html { redirect_to @feed, notice: 'Feed was successfully created.' }
        format.json { render json: @feed, status: :created, location: @feed }
      else
        format.html { render action: "new" }
        format.json { render json: @feed.errors, status: :unprocessable_entity }
      end
    end
  end

我的观点...好吧..

 <%= form_for @feed do |f| %>
  <%= ???%>
 <% end %>

预先感谢您的任何回复。我通常在 stackoverflow 上得到很好的帮助:)

最佳答案

型号

class Feed < ActiveRecord::Base
  attr_accessible :feed_url
  after_create { |feed| FeedEntry.update_from_feed(feed.feed_url) }
end

Controller

class FeedsController < ApplicationController

    def create 
        @feed = Feed.new(params[:feed])
        respond_to do |format|
          if @feed.save
            format.html { redirect_to @feed, notice: 'Feed was successfully created.' }
          else
            format.html { render action: "new" }
          end
        end    
    end

end

查看

  <%= form_for @feed do |f| %>
  <div class="field">
    <%= f.label "Feed URL" %><br />
    <%= f.text_field :feed_url %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
  <% end %>

关于ruby - 新手 Ruby on Rails - 从 View 将字符串传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14198846/

相关文章:

ruby-on-rails - Rails:#<ActiveStorage::Attached::Many:casualID> 的未定义方法 `signed_id'

ruby - 无方法错误 : undefined method `start_with?'

ruby-on-rails - 如何列出所有模型并包含一个通用模块

ruby-on-rails - 使用asset_path为单个 Assets 禁用 Assets 指纹

ruby-on-rails -/未定义方法 `page_media'中的NoMethodError为nil :NilClass

sql - 按数据库中的字符串名称排序

objective-c - 模拟Objective C中的抽象类和抽象方法?

python - 为什么我可以调用类中未显式定义的所有这些方法?

c++ - 抑制从 const 方法打印的消息

postgresql - 库未加载 :/usr/local/lib/libpq. 5.4.dylib