我已经坚持了几天这个问题了.
我已经在Railscasts Episode#198上取得了一些成功,但是那个是用于Rails 2.Rails 3中有一些变化使得它在第198集中提供的代码不起作用.
问题出在edit_individual.html.erb中:
原始代码(由Ryan @ Railscasts提供):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% fields_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render "fields", :f => f %>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
修改后的代码(只需将fields_for更改为form_for):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% form_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Ryan Bates描述的风格的多部分表单:
http://railscasts.com/episodes/217-multistep-forms
http://asciicasts.com/episodes/217-multistep-forms(基于文本的版本)
总而言之,我有一个视图(每个表单步骤都有一堆部分),当用户单击下一个按钮并显示表单的不同部分时,表单变量存储在会话中.
我的一个表单步骤允许用户通过Paperclip gem上传多个图像.问题在于Rails正在尝试将图像数据上传到会话,而会话返回TypeError"无法转储文件".
有什么好办法可以解决这个问题?
更新:我已经尝试了一堆宝石(巫师,acts_as_wizard和其他一些小宝石),但它们似乎都不适用于Rails 3.
我也试过将数据存储在一个数组中,直到表单完成,但这导致我的控制器变得庞大而混乱.
我正在尝试通过http://railscasts.com/episodes/155-beginning-with-cucumber进行工作,它基本上教授如何在Rails应用程序中使用Cucumber.
我安装了所有缺少的宝石和运行rails g cucumber:install运行虽然没有问题但是错过了创建features/step_definitions/webrat_steps.rb.
我正在使用的设置是Ruby 1.9.3(通过RVM)和Ubuntu上的Rails 3.1.3.运行bundle还包含webrat,rspec,rspec-rails和黄瓜(如预期的那样)
那我在哪里可以获得这个文件?为什么现在会出现?
干杯
在评估表单中,有一个提交按钮和一个<%= f.submit :private %>按钮.如果单击私人提交,则提交的信息将隐藏给查看该个人资料的其他用户.
我们如何使用<%= f.submit :private %>隐藏提交的信息来显示Feed?
活动/ index.html.erb
<h1>Feed</h1>
<% @activities.each do |activity| %>
<% if current_user == @user %>
<%= render_activity activity %>
<% else %>
<%= render_activity activity %> #We'd need to make .public_valuations work with this without getting an undefined method error.
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
activities_controller.rb
class ActivitiesController < ApplicationController
def index
@activities = PublicActivity::Activity.order("created_at desc").where(owner_id: current_user.following_ids, owner_type: "User")
end
end
Run Code Online (Sandbox Code Playgroud)
为了简便起见我将只包括_create(也有update和destroy).每次用户提交评估时,它都会在Feed上弹出,我们怎样才能 …
我正在关注OmniAuth railscast并尝试使用authlogic + facebook实现相同的功能,而不是像railscast中所示的设计+ twitter.
也许我的理解has_many还是不够好,但在railscasts瑞安有下面的代码中AuthenticationsController
def create
auth = request.env["rack.auth"]
current_user.authentications.find_or_create_by_provider_and_uid(auth['provider'], auth['uid'])
flash[:notice] = "Authentication successful."
redirect_to authentications_url
end
Run Code Online (Sandbox Code Playgroud)
在我的实现中current_user.authentications返回一个数组[]如何调用find_or_create_by_provider_and_uid数组?
我的实施错了吗?不是has_many假设返回一个数组?
我得到的错误是我正在调用find_or_create_by_provider_and_uid一个nil对象.
current_user.authentications 没有用,因为用户还没有任何身份验证.
我已经成功地实现了新的艺术家条目的添加,这些条目未包括在Ryan Bates的轨道广播中#258 http://railscasts.com/episodes/258-token-fields
换句话说,用户可以输入一个艺术家名称,该名称将使用jquery tokinput自动完成.但是,我希望自动填充结果只显示由该个人用户创建的艺术家名称.
这有意义吗?一个更好,更易理解的例子是collection.rb,其中用户创建帖子并为帖子指定一个"集合",但他们应该只能将帖子添加到他们自己创建的集合中.
这是使用artist_tokens作为虚拟属性的帖子表单:
<%= form_for @post, :validate => true, :html => {:multipart => true} do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<div class="field">
<%= f.label :title, 'Title:' %><br />
<%= f.text_field :title %><br />
<%= f.label :artist_tokens, "Artists" %><br />
<%= f.text_field :artist_tokens, "data-pre" =>
@post.artists.map(&:attributes).to_json %>
</div>
<div class="actions">
<%= f.submit "Submit" %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这通过在帖子表单上输入artist_tokens字段的值来查找艺术家,并且还添加了"添加{params [:q]}"选项以添加新条目.
class ArtistsController < ApplicationController
def index
@artists = Artist.where("name like ?", "%#{params[:q]}%")
results …Run Code Online (Sandbox Code Playgroud) 我正在关注语法高亮修订的RailsCasts剧集.我更新了我的ApplicationHelper,看起来像这样:
require 'redcarpet'
module ApplicationHelper
class HTMLwithPygments < Redcarpet::Render::HTML
def block_code(code, language)
Pygments.highlight(code, lexer:language)
end
end
def markdown(text)
renderer = HTMLwithPygments.new(hard_wrap: true, filter_html: true)
options = {
autolink: true,
no_intra_emphasis: true,
fenced_code_blocks: true,
lax_html_blocks: true,
strikethrough: true,
superscript: true
}
Redcarpet::Markdown.new(renderer, options).render(text).html_safe
end
end
Run Code Online (Sandbox Code Playgroud)
但是,我的网络应用程序返回
Routing Error
uninitialized constant Redcarpet::Render
Try running rake routes for more information on available routes.
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 3.2.11并且Redcarpet在rails控制台中做出了很好的响应.我原本没有包括,require 'redcarpet'但我按照这里的说明,但它没有帮助.
我正在浏览Public Activity Gem Railscast Vid.(http://railscasts.com/episodes/406-public-activity)
我当前的数据库查找/存储除recipient_id之外的所有内容....它显示为nil
#<PublicActivity::Activity id: 108, trackable_id: 133, trackable_type: "Relationship",
owner_id: 1, owner_type: "User", key: "relationship.create", parameters: {},
recipient_id: nil, recipient_type: nil, created_at: "2013-06-16 07:37:28",
updated_at: "2013-06-16 07:37:28">
Run Code Online (Sandbox Code Playgroud)
我希望recipient_id成为正在执行操作的用户....
防爆.
如果我喜欢Tom's Post .....我希望Tom的ID成为recipient_id我将成为owner_id.
我目前设置了一个收件人ID ....使用我的喜欢控制器中的代码....但它只将收件人ID设置为当前用户....这不是我想要的:(
喜欢控制器
class Like < ActiveRecord::Base
include PublicActivity::Model
tracked except: :destroy, owner: ->(controller, model) { controller && controller.current_user }
**tracked except: :destroy, recipient: ->(controller, model) { controller && controller.current_user }**
attr_accessible :dailypost_id, :user_id
belongs_to :user
belongs_to :dailypost
default_scope order: 'likes.created_at …Run Code Online (Sandbox Code Playgroud) 当使用从Ryan Bates的Railscasts情节#362的示例应用程序有关导出到Excel(https://github.com/railscasts/362-exporting-csv-and-excel),我已经注意到,Excel 2010中(这是Windows)在打开我使用"下载为Excel"链接下载的.xls文件时给出了一条警告消息.
警告如下:
"您尝试打开的文件格式与文件扩展名指定的格式不同.在打开文件之前,请验证文件是否已损坏且来自受信任的来源.您要立即打开该文件吗? "
点击"是",我可以正常打开文件.使用Excel 2011(在Mac上)时,我甚至没有收到警告消息.但我希望能够提供一个Excel文件,当用户从我的网站下载此类文件时,该文件不会提示该警告.
注意:我也尝试将应用程序中的所有引用从.xls替换为.xlsx,但Excel无法打开该文件.它抱怨:"Excel无法打开此文件.文件格式或文件扩展名无效.请验证文件是否已损坏,文件扩展名是否与文件格式匹配."
我知道的宝石,如AXLSX(的https://github.com/randym/axlsx),但希望我可以只使用Railscasts方法,并速战速决,以消除来自Excel 2010中的警告消息.
非常感谢你的帮助!
我使用嵌套属性Railscast作为指南实现了嵌套属性表单.因此,用户可以单击图标以动态地将"子"行添加到我的视图中.
不幸的是,我只能使这项工作在我看来,(说明最后一个图标在这里).此图标在我的视图中生成,但其他图标在用于呈现每一行的partial中生成.
是否有可能做到这一点?如果是这样,最好的方法是什么?
这是我最近的尝试.
表格has_many插槽.在工作表编辑视图中,我使用工作表构建器构建器(sheet)来渲染我的插槽部分,并将其传递给帮助程序link_to_add_fields,该帮助程序呈现一个链接,该链接将在单击时生成新行(此部分工作正常).你会注意到我也试图传递sheet给部分,所以我可以link_to_add_fields从那里打电话,但这是它发生故障的地方:
观点 - edit.html.haml:
= sheet.fields_for :slots do |builder|
= render 'slots/edit_fields', f: builder, sheet:sheet
= link_to_add_fields image_tag("plus.jpg", size:"18x18", alt:"Plus"), sheet, :slots, 'slots/edit'
Run Code Online (Sandbox Code Playgroud)
部分 - _edit_fields.html.haml:
- random_id = SecureRandom.uuid
.row.signup{:id => "edit-slot-#{random_id}"}
.col-md-1
%span.plus-icon
= link_to_add_fields image_tag("plus.jpg", size:"18x18", alt:"Plus"), sheet, :slots, 'slots/edit'
%span.minus-icon
= image_tag "minus.jpg", size:"18x18", alt:"Minus"
.col-md-2= f.text_field :label
... other fields ...
Run Code Online (Sandbox Code Playgroud)
辅助方法:
def link_to_add_fields(name, f, …Run Code Online (Sandbox Code Playgroud) ruby-on-rails nested-attributes railscasts ruby-on-rails-4.2