GVKun编程网logo

Ruby on Rails国家/州选择“ Enigma”(公路碎石国家标准)

28

这篇文章主要围绕RubyonRails国家/州选择“Enigma”和公路碎石国家标准展开,旨在为您提供一份详细的参考资料。我们将全面介绍RubyonRails国家/州选择“Enigma”的优缺点,解答

这篇文章主要围绕Ruby on Rails国家/州选择“ Enigma”公路碎石国家标准展开,旨在为您提供一份详细的参考资料。我们将全面介绍Ruby on Rails国家/州选择“ Enigma”的优缺点,解答公路碎石国家标准的相关问题,同时也会为您带来ruby-on-rails – Puma比Ruby 1.9.3和Rails 3.2的Unicorn好吗?、ruby-on-rails – Rails / Ruby pain – 如何检查gem是否基于UNIX / UNIX?、ruby-on-rails – Rails 3.2,如何更改:从邮件中的值而不是默认值(GMail)、ruby-on-rails – Rails 4.模型中的国家验证的实用方法。

本文目录一览:

Ruby on Rails国家/州选择“ Enigma”(公路碎石国家标准)

Ruby on Rails国家/州选择“ Enigma”(公路碎石国家标准)

我正在尝试实现看似非常简单的东西,并且到目前为止,我一直在反对它。

我希望得到的最终结果是与“国家选择”下拉列表绑定的“国家选择”下拉列表,这样,当选择了给定的国家/地区时,如果知道了状态,则这些状态将显示在选择下拉列表中,如果该国家没有已知的州,然后显示一个文本字段。

我觉得我快到了。此时,该界面实际上将根据人员所在的国家/地区生成该州的列表,除非它拒绝动态更新下拉列表。

我收集国家和州位置的部分视图如下:

# _person_setup.html.erb         <td>        <%= f.label :country, ''Select your country'' %>*<br />        <%= f.select :country, Carmen::country_names, {},           {:style => ''width: 200px'',           :id => ''country_select'',          :onchange => remote_function(            :url => {:action => ''update_states''},            :with => "''country=''+value")} %>                  </td><td>        <p>        <div id="states_div">            <%= render :partial => ''states'',                 :object => Carmen::states(                            Carmen::country_code(                              @person.country)),                :locals => {:form => f} %>       </div>        </p>                  </td>

DIV中引用的部分如下:

 # _states.html.erb<% unless states.nil? or states.empty? %>    <%= form.label :state, ''Select your state'' %>*<br />    <%= form.select :state, states.collect{|s| [s[0], s[0]]} %><% else %>    <%= form.label :state, ''Please enter state or province'' %>*<br />    <%= form.text_field :state %><% end %>

最后,用于动态更新状态列表的控制器代码:

def update_states    puts "Attempting to update states..."    q = params[:country]    states = Carmen::states(Carmen::country_code(q))puts "Country = #{q}, states = #{states.collect{|s| s[0]}.join(", ")}."render :update do |page|    page.replace_html "states_div",       :partial => ''states'',      :object => states,      :locals => {:form => form_for(@person)}endputs "OK"end

现在,将在适当的时候调用此代码并生成适当的状态列表。例如,当用户单击澳大利亚时,“尝试更新州…国家=澳大利亚,州=澳大利亚首都特区,新南威尔士州,北领地,昆士兰州,南澳大利亚州,塔斯马尼亚州,维多利亚州,西澳大利亚州”显示在服务器进程。但是,它不会更新页面,并且不会在最后打印“
OK”。简而言之,失败的线路无疑是

page.replace_html "states_div",       :partial => ''states'',      :object => states,      :locals => {:form => form_for(@person)}

请注意,用

page.replace_html ''states_div'', "<b>is it working</b>"

正确地替换了div,但是当然没有任何有用的东西。

有人可以帮我了解这里发生了什么吗?

答案1

小编典典

您似乎在假设@person变量在您的原始操作中仍然可用。可以通过针对当前人员的过滤器进行设置,但您不会在问题中显示出来。

如果确实需要再次查找@person,则必须在我认为的remote_function中传递ID。

ruby-on-rails – Puma比Ruby 1.9.3和Rails 3.2的Unicorn好吗?

ruby-on-rails – Puma比Ruby 1.9.3和Rails 3.2的Unicorn好吗?

有很多关于美洲狮的谈话,它比独角兽更快.但是,他们也提到它更适合J Ruby和Rubinius的例子.

我的问题:Ruby 1.9.3的Rails 3.2应用程序怎么样?独角兽还是美洲豹?

解决方法

独角兽和美洲狮有一篇伟大的文章

http://ylan.segal-family.com/blog/2013/05/20/unicorn-vs-puma-redux/

Unicorn是一个Rack HTTP服务器,它使用分支进程来同时处理多个传入请求.

>流程管理:独角兽将收获并重启死亡的员工
从破碎的应用程序.没有必要管理多个进程
端口你自己独角兽可以产生和管理任何数量的工人
您选择的流程扩展到您的后端.
>负载平衡完全由操作系统内核完成.
在忙碌的工作过程中,请求永远不会堆积.
>不管你的应用程序是否线程安全,工作人员都不在乎
在自己的隔离地址空间内运行,只提供一个
客户端一次最大的鲁棒性.
>支持所有机架应用程序,以及Ruby的前Rack版本
在Rails上通过机架包装.
>内置通过USR1重新打开应用程序中的所有日志文件
信号.这允许logrotate以原子和速度旋转文件
通过重命名,而不是racy和slow copytruncate方法.独角兽
还采取措施确保来自一个请求的多行日志条目
都保留在同一个文件中.
> Nginx风格的二进制升级而不会丢失连接.您可以
升级Unicorn,您的整个应用程序,库甚至您的
Ruby解释器不会丢弃客户端.
> before_fork和after_fork钩子,以防您的应用程序出现
处理分叉过程时的特殊需求.这些不应该
当“preload_app”伪指令为false时(默认值)需要.
>可以使用随便写入的内存管理来保存
内存(通过将“preload_app”设置为true).
>可以在多个接口(包括UNIX套接字)上进行侦听
工作进程也可以通过after_fork绑定到专用端口
钩子容易调试.
>简单易用的Ruby DSL配置

>即时解码分块传输,从而允许上传进度
通知将被实施并能够隧道化
基于HTTP的任意流式协议.

对于Puma(所谓的服务器杂讯的较新版本)

Puma是Ruby Web应用程序的简单,快速,高度并发的HTTP 1.1服务器.它可以用于支持Rack的任何应用程序,并被认为是Webrick和Mongrel的替代品.它被设计为Rubinius的去服务器,但也与JRuby和MRI良好. Puma适用于开发和生产环境.

美洲狮是速度和并行性的最爱

如果你想看速度比较,那么美洲豹是最好的.

为了更多你可以看到http://puma.io/

谢谢

ruby-on-rails – Rails / Ruby pain – 如何检查gem是否基于UNIX / UNIX?

ruby-on-rails – Rails / Ruby pain – 如何检查gem是否基于UNIX / UNIX?

有没有办法看看是否只在UNIX / UNIX类系统上支持gem?

是否有任何宝石可以“筛选”所有宝石,看看在Windows上使用它是否有任何问题.

解决方法

简答:不.

说实话,Windows是Ruby世界中的二等公民.大多数情况下,这是因为Linux,BSD,OS X和几乎所有其他基于POSIX的系统都会在一件事情上达成一致,Windows将会做一些完全不同的事情.

由于开发人员的疏忽,即使是打算与Windows一起使用的宝石也可能偶尔会破坏.大多数gem作者没有针对Windows运行的持续集成服务器,而是依赖于用户的错误报告.

支持Windows很困难,不仅因为API差异,而且由于Windows生态系统的特性,对命令行编译器的访问不像其他系统那样被认为是理所当然的.这意味着任何不是纯Ruby的gem都可能是一个安装挑战,特别是如果它有其他依赖,在Windows中工作是棘手的.

唯一可以确定的方法是尝试安装宝石并查看它们是否有效.

ruby-on-rails – Rails 3.2,如何更改:从邮件中的值而不是默认值(GMail)

ruby-on-rails – Rails 3.2,如何更改:从邮件中的值而不是默认值(GMail)

我已经建立了一个联系我们表格,我很好地收到了我的gApps收件箱中的电子邮件.但是,收到的电子邮件显示默认值:来自网站的值.我希望它们出现在电子邮件用户输入的电子邮件字段中.因此,当我点击“回复”时,它会将用户地址作为电子邮件必须发送的地址.

我试过这个,但它不起作用.知道为什么吗?

notifications_mailer.rb

class NotificationsMailer < ActionMailer::Base
  default to: "info@hikultura.com"

  def new_contact(message)
      @message = message
      mail(:subject => "[hiKultura.com] #{message.subject}",:from => message.email)
  end
end

的ContactController

class ContactController < ApplicationController

  def new
    @message = Contactmessage.new
  end

  def create
    @message = Contactmessage.new(params[:contactmessage])

    if @message.valid?
      NotificationsMailer.new_contact(@message).deliver
      redirect_to(root_path,:notice => "Message was successfully sent.")
    else
      flash.Now.alert = "Please fill all fields."
      render :new
    end
  end

end

UPDATE

我跟踪了我在SO中发现的类似案例:reply_to和GMail.但是,当我点击回复时,仍显示:到电子邮件地址.我错过了什么?

notifications_mailer.rb

class NotificationsMailer < ActionMailer::Base

   default :from => 'no-reply@mydomain.com'

  def new_contact(message)
      @message = message
      mail(:reply_to => "mierda@hotmail.com",:subject => "[mydomain.com] #{message.subject}",:to => "admin@mydomain.com"
      )
  end
end

解决方法

大多数SMTP提供商(Gmail等)不允许您从与您登录到SMTP服务器的帐户关联的地址以外的地址发送电子邮件,在您的情况下可能是配置地址的默认地址在你的应用程序中如果您考虑一下,这对安全/ SPAM保护很有意义.您是否希望任何人能够发送显示您的电子邮件地址作为发件人地址的电子邮件?我肯定不会.另一种方法是使用:reply_to.当你在电子邮件程序中点击回复时,它应该使用它,如果它存在.

mail(:subject => "[hiKultura.com] #{message.subject}",:reply_to => message.email)

ruby-on-rails – Rails 4.模型中的国家验证

ruby-on-rails – Rails 4.模型中的国家验证

我正在创建rails API,并希望为国家/地区字段添加验证,其中包含模型级别的ISO 3166-1代码.

例如,如果使用gem carmen-rails,它只提供helper country_select.是否可以在模型中使用ISO 3166-1代码的国家验证?

解决方法

您只是想验证输入的国家/地区代码是否合适?这应该适用于卡门

validates :country,inclusion:{in:Carmen::Country.all.map(&:code)}

但如果这就是你所需要的,那么countries gem也可能运作良好.有了你可以做的国家

validates :country,inclusion:{in:Country.all.map(&:pop)}

要么

validate :country_is_iso_compliant

def country_is_iso_compliant
  errors.add(:country,"must be 2 characters (ISO 3166-1).") unless Country[country]
end

更新

对于Region和State,您可以像这样同时验证所有3个.

validates :country,:region,:state,presence: true
validate :location


def location
  current_country = Country[country]
  if current_country
    #valid regions would be something Like "Europe" or "Americas" or "Africa"  etc.
    errors.add(:region,"incorrect region for country #{current_country.name}.") unless current_country.region == region
    #this will work for short codes like "CA" or "01" etc.
    #for named states use current_country.states.map{ |k,v| v["name"}.include?(state)
    #which would work for "California" Or "Lusaka"(it's in Zambia learn something new every day)
    errors.add(:state,"incorrect state for country #{current_country.name}.") unless current_country.states.keys.include?(state)
  else
    errors.add(:country,"must be a 2 character country representation (ISO 3166-1).")
  end
end

虽然地区似乎没必要,因为你可以从国家这里暗示这一点

before_validation {|record| record.region = Country[country].region if Country[country]}

关于Ruby on Rails国家/州选择“ Enigma”公路碎石国家标准的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ruby-on-rails – Puma比Ruby 1.9.3和Rails 3.2的Unicorn好吗?、ruby-on-rails – Rails / Ruby pain – 如何检查gem是否基于UNIX / UNIX?、ruby-on-rails – Rails 3.2,如何更改:从邮件中的值而不是默认值(GMail)、ruby-on-rails – Rails 4.模型中的国家验证等相关内容,可以在本站寻找。

本文标签: