【问题标题】:Confirmation message - Javascript rails application确认消息 - Javascript rails 应用程序
【发布时间】:2014-04-13 10:37:58
【问题描述】:

我对 Rails 有点陌生,我只是想在插入“提议”(创建的模型)时显示确认消息。为此,我使用了嵌入到 rails 的 javascript 功能。 不幸的是,当我单击并提交按钮时,提案已正确插入,但我找不到显示此确认消息的方法(例如“提案正确提交”)...

在我正在使用的代码下方:

命题模型:

class Proposition < ActiveRecord::Base
belongs_to :ad
attr_accessible :email, :name, :phone, :price
validates_presence_of :name or :price or :email or :phone
end

在控制器中创建方法:

def create
@ad = Ad.find(params[:ad_id])
@proposition = @ad.propositions.create(params[:proposition])

respond_to do |format|
if @proposition.save
format.html { redirect_to ad_path(@ad), notice: 'Proposition was successfully created.' }
format.json { render json: ad_path(@ad), status: :created, location: @proposition }
format.js 
else
format.html { render action: "new" }
format.json { render json: @proposition.errors, status: :unprocessable_entity }
format.js { render action: "new" }
end
end
end

_form.html.erb:

<%= form_for [@ad, @ad.propositions.build], :remote => true do |f| %>
<% if @proposition.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@proposition.errors.count, "error") %> prohibited this proposition from being saved:</h2>
<ul>
<% @proposition.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :Prénom %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :"Adresse mail" %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :Téléphone %><br />
<%= f.text_field :phone %>
</div>
<div class="field">
<%= f.label :"Prix proposé" %><br />
<%= f.text_field :price %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

创建.js.erb:

$('#new_proposition').fadeOut(1000);

new.js.erb:

$('#new_proposition_link').hide().after('<%= j render("form") %>');

感谢您的帮助!

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1


    【解决方案1】:

    既然你已经有了一个create.js.erb文件,你可以像这样使用JS来显示一条警告信息或者在页面中插入一条确认信息,

    # app/views/.../create.js.erb
    
    $('#new_proposition').before('<p>Proposition correctly submitted!</p>');
    $('#new_proposition').fadeOut(1000);
    

    这会在#new_proposition 元素之前插入&lt;p&gt;Proposition correctly submitted!&lt;/p&gt;。你可能想把它插入到别的地方,因为这个元素会消失。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2012-08-05
      • 1970-01-01
      • 2014-02-28
      • 2012-11-03
      • 2020-02-26
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多